0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-01-27 21:39:16 -05:00
logto/packages/core/src/middleware/koa-error-handler.test.ts

45 lines
1.2 KiB
TypeScript

import { createMockContext } from '@shopify/jest-koa-mocks';
import RequestError from '@/errors/RequestError';
import koaErrorHandler from './koa-error-handler';
describe('koaErrorHandler middleware', () => {
const mockBody = { data: 'foo' };
const ctx = createMockContext({
customProperties: {
body: mockBody,
},
});
const next = jest.fn().mockReturnValue(Promise.resolve());
beforeEach(() => {
ctx.body = mockBody;
ctx.status = 200;
});
afterEach(() => {
jest.clearAllMocks();
});
it('expect to return error response if error type is RequestError', async () => {
const error = new RequestError('auth.unauthorized');
next.mockRejectedValueOnce(error);
await koaErrorHandler()(ctx, next);
expect(ctx.status).toEqual(error.status);
expect(ctx.body).toEqual(error.body);
});
it('expect to return orginal body if not error found', async () => {
await koaErrorHandler()(ctx, next);
expect(ctx.status).toEqual(200);
expect(ctx.body).toEqual(mockBody);
});
it('expect to throw if error type is not RequestError', async () => {
next.mockRejectedValueOnce(new Error('err'));
await expect(koaErrorHandler()(ctx, next)).rejects.toThrow();
});
});