Skip to content

Commit 6ff19fc

Browse files
author
hirsch88
committed
Fix unit test for the error handler middleware
1 parent 655d175 commit 6ff19fc

File tree

4 files changed

+22
-23
lines changed

4 files changed

+22
-23
lines changed

src/api/middlewares/ErrorHandlerMiddleware.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@ import { Middleware, ExpressErrorMiddlewareInterface, HttpError } from 'routing-
33
import { env } from '../../core/env';
44
import { Logger, LoggerInterface } from '../../decorators/Logger';
55

6-
interface ErrorInterface extends HttpError {
7-
errors: any[];
8-
}
9-
106

117
@Middleware({ type: 'after' })
128
export class ErrorHandlerMiddleware implements ExpressErrorMiddlewareInterface {
@@ -17,12 +13,12 @@ export class ErrorHandlerMiddleware implements ExpressErrorMiddlewareInterface {
1713
@Logger(__filename) private log: LoggerInterface
1814
) { }
1915

20-
public error(error: ErrorInterface, req: express.Request, res: express.Response, next: express.NextFunction): void {
16+
public error(error: HttpError, req: express.Request, res: express.Response, next: express.NextFunction): void {
2117
res.status(error.httpCode || 500);
2218
res.json({
2319
name: error.name,
2420
message: error.message,
25-
errors: error.errors || [],
21+
errors: error['errors'] || [],
2622
});
2723

2824
if (this.isProduction) {

test/unit/auth/AuthService.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ describe('AuthService', () => {
3535
});
3636
const token = authService.parseTokenFromRequest(req);
3737
expect(token).toBeUndefined();
38-
expect(log.infoMock).toBeCalledWith('info', 'No Token provided by the client', []);
38+
expect(log.infoMock).toBeCalledWith('No Token provided by the client', []);
3939
});
4040

4141
test('Should return undefined if there is no "Authorization" header', () => {
4242
const req: Request = new MockExpressRequest();
4343
const token = authService.parseTokenFromRequest(req);
4444
expect(token).toBeUndefined();
45-
expect(log.infoMock).toBeCalledWith('info', 'No Token provided by the client', []);
45+
expect(log.infoMock).toBeCalledWith('No Token provided by the client', []);
4646
});
4747
});
4848

test/unit/lib/LogMock.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@ export class LogMock extends Logger {
99
public errorMock = jest.fn();
1010

1111
public debug(message: string, ...args: any[]): void {
12-
this.debugMock('debug', message, args);
12+
this.debugMock(message, args);
1313
}
1414

1515
public info(message: string, ...args: any[]): void {
16-
this.infoMock('info', message, args);
16+
this.infoMock(message, args);
1717
}
1818

1919
public warn(message: string, ...args: any[]): void {
20-
this.warnMock('warn', message, args);
20+
this.warnMock(message, args);
2121
}
2222

2323
public error(message: string, ...args: any[]): void {
24-
this.errorMock('error', message, args);
24+
this.errorMock(message, args);
2525
}
2626

2727
}

test/unit/middlewares/ErrorHandlerMiddleware.test.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,33 @@ import { LogMock } from '../lib/LogMock';
66

77
describe('ErrorHandlerMiddleware', () => {
88

9+
let log;
10+
let middleware;
11+
let err;
12+
let res;
13+
beforeEach(() => {
14+
log = new LogMock();
15+
middleware = new ErrorHandlerMiddleware(log);
16+
res = new MockExpressResponse();
17+
err = new HttpError(400, 'Test Error');
18+
});
19+
920
test('Should not print stack out in production', () => {
10-
const middleware = new ErrorHandlerMiddleware(new LogMock());
1121
middleware.isProduction = true;
12-
13-
const res = new MockExpressResponse();
14-
const err = new HttpError(400, 'Test Error');
1522
middleware.error(err, undefined, res, undefined);
1623
const json = res._getJSON();
1724
expect(json.name).toBe(err.name);
1825
expect(json.message).toBe(err.message);
19-
expect(json.stack).toBeUndefined();
26+
expect(log.errorMock).toHaveBeenCalledWith(err.name, [err.message]);
2027
});
2128

22-
test('Should print stack out in production', () => {
23-
const middleware = new ErrorHandlerMiddleware(new LogMock());
29+
test('Should print stack out in development', () => {
2430
middleware.isProduction = false;
25-
26-
const res = new MockExpressResponse();
27-
const err = new HttpError(400, 'Test Error');
2831
middleware.error(err, undefined, res, undefined);
2932
const json = res._getJSON();
3033
expect(json.name).toBe(err.name);
3134
expect(json.message).toBe(err.message);
32-
expect(json.stack).toBeDefined();
35+
expect(log.errorMock).toHaveBeenCalled();
3336
});
3437

3538
});

0 commit comments

Comments
 (0)