forked from Lilly-Protocol/lily-backend
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherror-log-level.test.ts
More file actions
50 lines (39 loc) · 1.51 KB
/
Copy patherror-log-level.test.ts
File metadata and controls
50 lines (39 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import express from "express";
import request from "supertest";
import { afterEach, describe, expect, it, vi } from "vitest";
import { AppError } from "../src/common/http/app-error";
import { errorHandler } from "../src/common/http/error.middleware";
import { logger } from "../src/config/logger";
const createErrorApp = (error: Error) => {
const app = express();
app.get("/error", (_request, _response, next) => {
next(error);
});
app.use(errorHandler);
return app;
};
describe("error handler log levels", () => {
afterEach(() => {
vi.restoreAllMocks();
});
it.each([400, 404, 429])("logs %s responses at warn level", async (statusCode) => {
const warn = vi.spyOn(logger, "warn").mockImplementation(() => logger);
const error = vi.spyOn(logger, "error").mockImplementation(() => logger);
const response = await request(
createErrorApp(new AppError(statusCode, "Client request failed")),
).get("/error");
expect(response.status).toBe(statusCode);
expect(warn).toHaveBeenCalledOnce();
expect(error).not.toHaveBeenCalled();
});
it("logs 500 responses at error level", async () => {
const warn = vi.spyOn(logger, "warn").mockImplementation(() => logger);
const error = vi.spyOn(logger, "error").mockImplementation(() => logger);
const response = await request(createErrorApp(new Error("Server failure"))).get(
"/error",
);
expect(response.status).toBe(500);
expect(error).toHaveBeenCalledOnce();
expect(warn).not.toHaveBeenCalled();
});
});