Files
turnosxpress/server/src/middleware/__tests__/systemToken.test.ts
T

61 lines
2.1 KiB
TypeScript

import { Request, Response } from "express";
import { systemTokenMiddleware } from "../systemToken";
describe("systemTokenMiddleware", () => {
const originalSystemKey = process.env.SYSTEM_KEY;
const originalApiKey = process.env.API_KEY;
afterEach(() => {
process.env.SYSTEM_KEY = originalSystemKey;
process.env.API_KEY = originalApiKey;
jest.clearAllMocks();
});
function createResponse(): Response {
return {
status: jest.fn().mockReturnThis(),
json: jest.fn().mockReturnThis(),
} as unknown as Response;
}
it("allows requests with a valid system token", async () => {
process.env.SYSTEM_KEY = "system-token";
const request = { body: { systemToken: "system-token" } } as Request;
const response = createResponse();
const next = jest.fn();
await systemTokenMiddleware(request, response, next);
expect(next).toHaveBeenCalledTimes(1);
expect(response.status).not.toHaveBeenCalled();
});
it("rejects requests without a valid system token", async () => {
process.env.SYSTEM_KEY = "system-token";
const request = { body: { systemToken: "wrong-token" } } as Request;
const response = createResponse();
const next = jest.fn();
await systemTokenMiddleware(request, response, next);
expect(next).not.toHaveBeenCalled();
expect(response.status).toHaveBeenCalledWith(401);
expect(response.json).toHaveBeenCalledWith(
expect.objectContaining({ desc: "Token de sistema inválido" })
);
});
it("rejects requests when no server-side system token is configured", async () => {
delete process.env.SYSTEM_KEY;
delete process.env.API_KEY;
const request = { body: { systemToken: "system-token" } } as Request;
const response = createResponse();
const next = jest.fn();
await systemTokenMiddleware(request, response, next);
expect(next).not.toHaveBeenCalled();
expect(response.status).toHaveBeenCalledWith(401);
});
});