Files
agentdock/console/server/multica-oauth.test.js
T

25 lines
1.2 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import { buildLocalMulticaCallbackUrl, buildManagedMulticaLoginUrl, parseMulticaLoginOutput } from "./multica-oauth.js";
const output = `Waiting for authentication...\nhttps://mul.example/login?cli_callback=http%3A%2F%2Flocalhost%3A43239%2Fcallback&cli_state=nonce`;
test("parses Multica login output", () => {
const parsed = parseMulticaLoginOutput(output);
assert.equal(parsed.callbackUrl.port, "43239");
assert.equal(parsed.state, "nonce");
});
test("rewrites Multica login to the managed callback endpoint", () => {
const loginUrl = new URL(buildManagedMulticaLoginUrl(output, "https://agent.example", "session-id"));
assert.equal(loginUrl.searchParams.get("cli_callback"), "https://agent.example/api/integrations/multica/oauth/callback/session-id");
});
test("builds the local callback only when state matches", () => {
assert.equal(
buildLocalMulticaCallbackUrl(output, { token: "secret", state: "nonce" }),
"http://localhost:43239/callback?token=secret&state=nonce",
);
assert.throws(() => buildLocalMulticaCallbackUrl(output, { token: "secret", state: "wrong" }), /校验失败/);
});