import { describe, expect, it } from "vitest"; import { isChajiaModuleId, moduleToHubRoute, parseChajiaPostMessage, } from "@/lib/embed/host-bridge"; describe("host-bridge postMessage protocol", () => { it("parse 合法信封", () => { const msg = parseChajiaPostMessage({ source: "chajia", version: 1, type: "chajia:fill", module: "MS_GUEST", request_id: "r1", payload: { form: { pallet_count: 2 } }, }); expect(msg?.type).toBe("chajia:fill"); expect(msg?.module).toBe("MS_GUEST"); expect(msg?.request_id).toBe("r1"); }); it("拒绝非 chajia 来源", () => { expect( parseChajiaPostMessage({ source: "other", version: 1, type: "chajia:fill" }), ).toBeNull(); }); it("moduleToHubRoute 四模块", () => { expect(moduleToHubRoute("MS_GUEST")).toEqual({ provider: "mothership", mode: "anon", }); expect(moduleToHubRoute("MS_LOGGED_IN")).toEqual({ provider: "mothership", mode: "login", }); expect(moduleToHubRoute("FLOCK_GUEST")).toEqual({ provider: "flock", mode: "anon", }); expect(moduleToHubRoute("FLOCK_LOGGED_IN")).toEqual({ provider: "flock", mode: "login", }); }); it("parse 宿主 scroll-quotes", () => { const msg = parseChajiaPostMessage({ source: "chajia", version: 1, type: "chajia:scroll-quotes", }); expect(msg?.type).toBe("chajia:scroll-quotes"); }); it("parse iframe scroll-top", () => { const msg = parseChajiaPostMessage({ source: "chajia", version: 1, type: "chajia:scroll-top", module: "MS_LOGGED_IN", payload: { reason: "logged-in-details" }, }); expect(msg?.type).toBe("chajia:scroll-top"); expect(msg?.module).toBe("MS_LOGGED_IN"); }); });