import { AuthSessionId } from "@t3tools/contracts"; import { describe, expect, it } from "@effect/vitest"; import * as DateTime from "effect/DateTime"; import { applyAuthAccessStreamEvent, EMPTY_AUTH_ACCESS_SNAPSHOT } from "./auth.ts"; describe("applyAuthAccessStreamEvent", () => { it("accumulates rapid pairing-link and client updates into one snapshot", () => { const pairingLink = { id: "pairing-link", credential: "credential", scopes: ["orchestration:read"], subject: "subject", label: "Phone", createdAt: DateTime.makeUnsafe("2036-04-07T00:00:00.000Z"), expiresAt: DateTime.makeUnsafe("2036-04-07T00:05:00.000Z"), } as const; const clientSession = { sessionId: AuthSessionId.make("session-client"), subject: "subject", scopes: ["orchestration:read"], method: "browser-session-cookie", client: { label: "Phone", deviceType: "mobile", }, issuedAt: DateTime.makeUnsafe("2036-04-07T00:00:00.000Z"), expiresAt: DateTime.makeUnsafe("2036-05-07T00:00:00.000Z"), lastConnectedAt: null, connected: true, current: false, } as const; const withPairingLink = applyAuthAccessStreamEvent(EMPTY_AUTH_ACCESS_SNAPSHOT, { version: 1, revision: 1, type: "pairingLinkUpserted", payload: pairingLink, }); const withClient = applyAuthAccessStreamEvent(withPairingLink, { version: 1, revision: 2, type: "clientUpserted", payload: clientSession, }); expect(withClient).toEqual({ connectSecurityMode: "account", connectClients: [], pairingLinks: [pairingLink], clientSessions: [clientSession], }); }); it("applies removals without disturbing unrelated access state", () => { const snapshot = applyAuthAccessStreamEvent( { connectSecurityMode: "client-approval", connectClients: [], pairingLinks: [ { id: "pairing-link", credential: "credential", scopes: ["orchestration:read"], subject: "subject", label: "Phone", createdAt: DateTime.makeUnsafe("2036-04-07T00:00:00.000Z"), expiresAt: DateTime.makeUnsafe("2036-04-07T00:05:00.000Z"), }, ], clientSessions: [], }, { version: 1, revision: 2, type: "pairingLinkRemoved", payload: { id: "pairing-link" }, }, ); expect(snapshot).toEqual({ ...EMPTY_AUTH_ACCESS_SNAPSHOT, connectSecurityMode: "client-approval", }); }); it("applies Connect security mode and client updates", () => { const connectClient = { clientProofKeyThumbprint: "thumbprint", cloudUserId: "user_123", status: "pending", client: { label: "Phone", deviceType: "mobile", }, requestedAt: DateTime.makeUnsafe("2036-04-07T00:00:00.000Z"), updatedAt: DateTime.makeUnsafe("2036-04-07T00:00:00.000Z"), approvedAt: null, rejectedAt: null, lastSeenAt: null, } as const; const withMode = applyAuthAccessStreamEvent(EMPTY_AUTH_ACCESS_SNAPSHOT, { version: 1, revision: 1, type: "connectSecurityModeUpdated", payload: { mode: "client-approval" }, }); const withClient = applyAuthAccessStreamEvent(withMode, { version: 1, revision: 2, type: "connectClientUpserted", payload: connectClient, }); const withoutClient = applyAuthAccessStreamEvent(withClient, { version: 1, revision: 3, type: "connectClientRemoved", payload: { clientProofKeyThumbprint: "thumbprint" }, }); expect(withClient.connectSecurityMode).toBe("client-approval"); expect(withClient.connectClients).toEqual([connectClient]); expect(withoutClient).toEqual({ ...EMPTY_AUTH_ACCESS_SNAPSHOT, connectSecurityMode: "client-approval", }); }); });