import { describe, it, expect } from "vitest"; import { resolveIdentity } from "../src/mcp.js"; function fakeExtra(header?: string): unknown { if (header === undefined) return {}; return { requestInfo: { headers: { "x-mailbox": header } } }; } describe("resolveIdentity", () => { it("prefers the explicit argument when present", () => { expect(resolveIdentity("alice", fakeExtra("bob"), "from")).toBe("alice"); }); it("falls back to X-Mailbox header when arg missing", () => { expect(resolveIdentity(undefined, fakeExtra("bob"), "from")).toBe("bob"); }); it("trims whitespace from explicit arg and header", () => { expect(resolveIdentity(" alice ", fakeExtra(), "from")).toBe("alice"); expect(resolveIdentity(undefined, fakeExtra(" bob "), "name")).toBe("bob"); }); it("treats empty arg as missing and falls back", () => { expect(resolveIdentity("", fakeExtra("bob"), "name")).toBe("bob"); expect(resolveIdentity(" ", fakeExtra("bob"), "name")).toBe("bob"); }); it("throws with a helpful message when neither is provided", () => { expect(() => resolveIdentity(undefined, fakeExtra(), "from")).toThrow( /Pass `from`.*SessionStart announcement/i, ); }); it("throws referencing the correct arg name", () => { expect(() => resolveIdentity(undefined, fakeExtra(), "name")).toThrow( /Pass `name`/, ); }); it("handles extra without requestInfo", () => { expect(() => resolveIdentity(undefined, {}, "from")).toThrow(/Pass `from`/); expect(() => resolveIdentity(undefined, null, "from")).toThrow(/Pass `from`/); }); });