UNPKG

@gp_jcisneros/errors

Version:

Error handling utilities for GreenPay microservices and validation middleware

113 lines (92 loc) 3.93 kB
const { HttpError } = require('../src/HttpError'); describe('HttpError', () => { test('should create a bad request error', () => { const error = HttpError.badRequest('Invalid data'); expect(error.message).toBe('Invalid data'); expect(error.statusCode).toBe(400); expect(error.name).toBe('HttpError'); expect(error.type).toBe('HTTP_ERROR'); expect(error.errorCode).toBe('HTTP_400'); expect(error.description).toBe('Invalid data'); expect(error.integration).toBe('http-service'); }); test('should create an unauthorized error', () => { const error = HttpError.unauthorized('Invalid token'); expect(error.message).toBe('Invalid token'); expect(error.statusCode).toBe(401); expect(error.errorCode).toBe('HTTP_401'); expect(error.description).toBe('Invalid token'); expect(error.integration).toBe('http-service'); }); test('should create a forbidden error', () => { const error = HttpError.forbidden('Access denied'); expect(error.message).toBe('Access denied'); expect(error.statusCode).toBe(403); expect(error.errorCode).toBe('HTTP_403'); expect(error.description).toBe('Access denied'); expect(error.integration).toBe('http-service'); }); test('should create a not found error', () => { const error = HttpError.notFound('Resource not found'); expect(error.message).toBe('Resource not found'); expect(error.statusCode).toBe(404); expect(error.errorCode).toBe('HTTP_404'); expect(error.description).toBe('Resource not found'); expect(error.integration).toBe('http-service'); }); test('should create a conflict error', () => { const error = HttpError.conflict('Data conflict'); expect(error.message).toBe('Data conflict'); expect(error.statusCode).toBe(409); expect(error.errorCode).toBe('HTTP_409'); expect(error.description).toBe('Data conflict'); expect(error.integration).toBe('http-service'); }); test('should create an unprocessable entity error', () => { const error = HttpError.unprocessableEntity('Invalid entity'); expect(error.message).toBe('Invalid entity'); expect(error.statusCode).toBe(422); expect(error.errorCode).toBe('HTTP_422'); expect(error.description).toBe('Invalid entity'); expect(error.integration).toBe('http-service'); }); test('should create an internal server error', () => { const error = HttpError.internalServerError('Server error'); expect(error.message).toBe('Server error'); expect(error.statusCode).toBe(500); expect(error.errorCode).toBe('HTTP_500'); expect(error.description).toBe('Server error'); expect(error.integration).toBe('http-service'); }); test('should have required fields', () => { const error = HttpError.badRequest('Invalid data'); expect(error.hasRequiredFields()).toBe(true); expect(error.getRequiredFields()).toEqual({ errorCode: 'HTTP_400', description: 'Invalid data', integration: 'http-service' }); }); test('should convert to JSON', () => { const error = HttpError.notFound('Resource not found'); const json = error.toJSON(); expect(json.name).toBe('HttpError'); expect(json.message).toBe('Resource not found'); expect(json.statusCode).toBe(404); expect(json.errorCode).toBe('HTTP_404'); expect(json.description).toBe('Resource not found'); expect(json.integration).toBe('http-service'); expect(json.timestamp).toBeDefined(); expect(json.stack).toBeDefined(); }); test('should create error with custom status code', () => { const error = new HttpError('Custom error', 418); expect(error.statusCode).toBe(418); expect(error.errorCode).toBe('HTTP_418'); }); test('should use default status code', () => { const error = new HttpError('Default error'); expect(error.statusCode).toBe(500); expect(error.errorCode).toBe('HTTP_500'); }); });