import { afterEach, describe, expect, test } from "vitest"; import { createMockProtectedApiServer } from "../scripts/mock-protected-api.mjs"; const servers: Array<{ close: () => Promise }> = []; 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" }); }); test("accepts a batch payload 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/batches`, { body: JSON.stringify({ authors: [{ authorId: "111", authorName: "达人A" }], batchName: "批次A", createdAt: "2026-04-22T12:30:00.000Z", creatorName: "王少卿", logtoUserId: "p7pdhhtde8kj", resource: "https://talent-search.intelligrow.cn" }), headers: { Authorization: "Bearer abc123", "Content-Type": "application/json" }, method: "POST" }); expect(response.status).toBe(200); await expect(response.json()).resolves.toEqual( expect.objectContaining({ acceptedCount: 1, batchId: null, ok: true, source: "mock-batch-submit" }) ); }); });