You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.2 KiB
43 lines
1.2 KiB
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
import {
|
|
resetServiceTokenCache,
|
|
verifyServiceToken,
|
|
} from "@/modules/auth/service-token";
|
|
|
|
const DEMO_TOKENS = JSON.stringify({
|
|
"demo-host-token": {
|
|
customerId: "CUST_001",
|
|
permissions: ["pricing:markup:write"],
|
|
},
|
|
});
|
|
|
|
describe("modules/auth/service-token", () => {
|
|
beforeEach(() => {
|
|
process.env.HOST_SERVICE_TOKENS = DEMO_TOKENS;
|
|
resetServiceTokenCache();
|
|
});
|
|
|
|
afterEach(() => {
|
|
delete process.env.HOST_SERVICE_TOKENS;
|
|
resetServiceTokenCache();
|
|
});
|
|
|
|
it("正确 token + 匹配 customer_id 通过", () => {
|
|
const result = verifyServiceToken("demo-host-token", "CUST_001");
|
|
expect(result.customerId).toBe("CUST_001");
|
|
expect(result.permissions).toContain("pricing:markup:write");
|
|
});
|
|
|
|
it("customer_id 不匹配返回 403", () => {
|
|
expect(() => verifyServiceToken("demo-host-token", "CUST_002")).toThrow(
|
|
expect.objectContaining({ code: "FORBIDDEN" }),
|
|
);
|
|
});
|
|
|
|
it("无效 token 返回 401", () => {
|
|
expect(() => verifyServiceToken("invalid-token", "CUST_001")).toThrow(
|
|
expect.objectContaining({ code: "UNAUTHORIZED" }),
|
|
);
|
|
});
|
|
});
|