import { describe, expect, it } from "bun:test"; import { PREVIEW_PAIRING_TRANSPORT_SOURCE, previewConnectionHostContextUpdatedSchema, previewConnectionPairingStatusRequestSchema, previewConnectionPairingStatusResultSchema, previewConnectionUnpairedSchema, previewConnectionUnpairRequestSchema, previewPairingHostAckSchema, previewPairingHostRequestSchema, previewPairingHostResultSchema, } from "./preview-pairing-transport"; describe("preview pairing transport protocol", () => { it("parses correlated pairing status probes", () => { expect( previewConnectionPairingStatusRequestSchema.parse({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.pairing-status.request", requestId: "req_status_123", appId: "app_123", }), ).toEqual({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.pairing-status.request", requestId: "req_status_123", appId: "app_123", }); expect( previewConnectionPairingStatusResultSchema.parse({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.pairing-status.result", requestId: "req_status_123", paired: false, }), ).toEqual({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.pairing-status.result", requestId: "req_status_123", paired: false, }); }); it("parses paired host context updates", () => { expect( previewConnectionHostContextUpdatedSchema.parse({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.host-context.updated", url: "https://customer.example.com/app/customers/123", }), ).toEqual({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.host-context.updated", url: "https://customer.example.com/app/customers/123", }); }); it("parses unpair requests", () => { expect( previewConnectionUnpairRequestSchema.parse({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.unpair.request", }), ).toEqual({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.unpair.request", }); }); it("parses superseded notifications", () => { expect( previewConnectionUnpairedSchema.parse({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.unpaired", reason: "superseded", }), ).toEqual({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.unpaired", reason: "superseded", }); }); it("parses host pairing requests", () => { expect( previewPairingHostRequestSchema.parse({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.pair.request", requestId: "req_123", previewToken: "prv_123", expectedRevision: 2, capabilities: ["post-message"], }), ).toEqual({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.pair.request", requestId: "req_123", previewToken: "prv_123", expectedRevision: 2, capabilities: ["post-message"], }); }); it("parses ack and result messages", () => { expect( previewPairingHostAckSchema.parse({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.pair.ack", requestId: "req_123", }), ).toEqual({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.pair.ack", requestId: "req_123", }); expect( previewPairingHostResultSchema.parse({ source: PREVIEW_PAIRING_TRANSPORT_SOURCE, type: "preview.connection.pair.result", requestId: "req_123", ok: true, result: { appId: "app_123", capabilities: ["post-message"], id: "prvs_123", organizationId: "org_123", pairedAt: "2026-06-29T00:00:00.000Z", pairedIdentity: "anon_123", pairedUrl: "https://customer.example.com/app", revision: 3, }, }), ).toMatchObject({ ok: true, requestId: "req_123", }); }); });