129 lines · 3.9 KB · TypeScript
RawDownload
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",    });  });});