48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import { afterEach, describe, expect, test } from "vitest";
|
|
|
|
import { createMockProtectedApiServer } from "../scripts/mock-protected-api.mjs";
|
|
|
|
const servers: Array<{ close: () => Promise<void> }> = [];
|
|
|
|
afterEach(async () => {
|
|
while (servers.length > 0) {
|
|
await servers.pop()?.close();
|
|
}
|
|
});
|
|
|
|
describe("mock-protected-api", () => {
|
|
test("returns mock data when a Bearer token is present", async () => {
|
|
const server = createMockProtectedApiServer({ port: 0 });
|
|
await server.start();
|
|
servers.push(server);
|
|
|
|
const response = await fetch(`${server.baseUrl}/api/mock/protected`, {
|
|
headers: {
|
|
Authorization: "Bearer abc123"
|
|
}
|
|
});
|
|
|
|
expect(response.status).toBe(200);
|
|
await expect(response.json()).resolves.toEqual(
|
|
expect.objectContaining({
|
|
ok: true,
|
|
source: "mock-protected-api"
|
|
})
|
|
);
|
|
});
|
|
|
|
test("returns 401 when the Authorization header is missing", async () => {
|
|
const server = createMockProtectedApiServer({ port: 0 });
|
|
await server.start();
|
|
servers.push(server);
|
|
|
|
const response = await fetch(`${server.baseUrl}/api/mock/protected`);
|
|
|
|
expect(response.status).toBe(401);
|
|
await expect(response.json()).resolves.toEqual({
|
|
ok: false,
|
|
error: "unauthorized"
|
|
});
|
|
});
|
|
});
|