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

import { describe, expect, it, beforeEach, afterEach } from "vitest";
import {
EMBED_DEMO_DEFAULT_PASSWORD,
EMBED_DEMO_ROLE,
getEmbedDemoPassword,
signEmbedDemoToken,
verifyEmbedDemoToken,
} from "@/modules/embed-demo/auth";
describe("embed-demo auth", () => {
const prevSecret = process.env.JWT_SECRET;
const prevPassword = process.env.EMBED_DEMO_PASSWORD;
beforeEach(() => {
process.env.JWT_SECRET = "test-jwt-secret-for-embed-demo";
delete process.env.EMBED_DEMO_PASSWORD;
});
afterEach(() => {
if (prevSecret === undefined) {
delete process.env.JWT_SECRET;
} else {
process.env.JWT_SECRET = prevSecret;
}
if (prevPassword === undefined) {
delete process.env.EMBED_DEMO_PASSWORD;
} else {
process.env.EMBED_DEMO_PASSWORD = prevPassword;
}
});
it("默认演示密码为 123456", () => {
expect(getEmbedDemoPassword()).toBe(EMBED_DEMO_DEFAULT_PASSWORD);
});
it("签发与校验演示会话 JWT", async () => {
const token = await signEmbedDemoToken("CUST_002");
const payload = await verifyEmbedDemoToken(token);
expect(payload.sub).toBe("CUST_002");
expect(payload.role).toBe(EMBED_DEMO_ROLE);
});
});