@p-j/eapi-middleware-errorhandler
Version:
An Error Handler middleware to work within an EAPI app. Check worker-eapi-template for context.
51 lines • 2.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const withErrorHandler_1 = require("./withErrorHandler");
describe('withErrorHandler', () => {
let successFn, errorFn, forwardFn, error;
beforeEach(() => {
error = new Error();
successFn = jest.fn(() => 'hello');
errorFn = jest.fn(() => {
throw error;
});
forwardFn = jest.fn();
});
it('to not do anything if the passed function succed', async () => {
const request = new Request('https://example.com');
const event = new FetchEvent('fetch', { request });
const requestHandler = (0, withErrorHandler_1.withErrorHandler)()(successFn);
const response = await requestHandler({ event, request, params: {} });
expect(successFn.mock.calls.length).toBe(1);
expect(response).toBe('hello');
});
it('produce an empty 500 response in case of failure', async () => {
const request = new Request('https://example.com');
const event = new FetchEvent('fetch', { request });
const requestHandler = (0, withErrorHandler_1.withErrorHandler)()(errorFn);
const response = await requestHandler({ event, request, params: {} });
expect(errorFn.mock.calls.length).toBe(1);
expect(response.status).toBe(500);
expect(response.body).toBe(null);
});
it('produce a detailed 500 response in case of failure & debug=true is in the URL', async () => {
const request = new Request('https://example.com?debug=true');
const event = new FetchEvent('fetch', { request });
const requestHandler = (0, withErrorHandler_1.withErrorHandler)({ enableDebug: true })(errorFn);
const response = await requestHandler({ event, request, params: {} });
expect(errorFn.mock.calls.length).toBe(1);
expect(response.status).toBe(500);
expect(await response.text()).toBe(error.stack);
});
it('call the forward function when given', async () => {
const request = new Request('https://example.com');
const event = new FetchEvent('fetch', { request });
const requestHandler = (0, withErrorHandler_1.withErrorHandler)({ forwardError: forwardFn })(errorFn);
const response = await requestHandler({ event, request, params: {} });
expect(errorFn.mock.calls.length).toBe(1);
expect(forwardFn.mock.calls.length).toBe(1);
expect(response.status).toBe(500);
expect(response.body).toBe(null);
});
});
//# sourceMappingURL=withErrorHandler.test.js.map