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.

58 lines
1.6 KiB

import { describe, expect, it } from "vitest";
import {
isEmbedHostedShell,
parseEmbedSsoParams,
} from "@/lib/embed/sso-params";
describe("parseEmbedSsoParams", () => {
it("解析 login_type=api_key + api_key", () => {
const p = new URLSearchParams(
"login_type=api_key&api_key=chj_demo_token",
);
expect(parseEmbedSsoParams(p)).toEqual({
mode: "api_key",
apiKey: "chj_demo_token",
});
});
it("解析短别名 type=key + key=", () => {
const p = new URLSearchParams("type=api_key&key=demo-host-token");
expect(parseEmbedSsoParams(p)).toEqual({
mode: "api_key",
apiKey: "demo-host-token",
});
});
it("仅有 key 无 type 时默认 api_key", () => {
const p = new URLSearchParams("api_key=abc");
expect(parseEmbedSsoParams(p)).toEqual({ mode: "api_key", apiKey: "abc" });
});
it("解析账号密码", () => {
const p = new URLSearchParams(
"login_type=password&customer_id=CUST_001&password=secret",
);
expect(parseEmbedSsoParams(p)).toEqual({
mode: "password",
customerId: "CUST_001",
password: "secret",
});
});
it("缺字段 → none", () => {
expect(parseEmbedSsoParams(new URLSearchParams("login_type=api_key"))).toEqual(
{ mode: "none" },
);
});
});
describe("isEmbedHostedShell", () => {
it("embed=1 或带 SSO 凭证视为托管壳", () => {
expect(isEmbedHostedShell(new URLSearchParams("embed=1"))).toBe(true);
expect(
isEmbedHostedShell(new URLSearchParams("api_key=x")),
).toBe(true);
expect(isEmbedHostedShell(new URLSearchParams(""))).toBe(false);
});
});