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({ pairingLinks: [pairingLink], clientSessions: [clientSession], }); }); it("applies removals without disturbing unrelated access state", () => { const snapshot = applyAuthAccessStreamEvent( { 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); });});
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({
pairingLinks: [pairingLink],
clientSessions: [clientSession],
});
});
it("applies removals without disturbing unrelated access state", () => {
const snapshot = applyAuthAccessStreamEvent(
{
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);
});
});