94 lines · 2.9 KB · TypeScript
RawDownload
import { assert, describe, it } from "@effect/vitest";import * as Effect from "effect/Effect";import * as Layer from "effect/Layer";import { vi } from "vite-plus/test"; const { createClerkBridgeMock, storageAdapter, storageMock } = vi.hoisted(() => ({  createClerkBridgeMock: vi.fn(),  storageAdapter: {    getItem: vi.fn(),    setItem: vi.fn(),    removeItem: vi.fn(),  },  storageMock: vi.fn(),})); vi.mock("@clerk/electron", () => ({  createClerkBridge: createClerkBridgeMock,})); vi.mock("@clerk/electron/storage", () => ({  storage: storageMock,})); import * as DesktopClerk from "./DesktopClerk.ts";import * as DesktopEnvironment from "./DesktopEnvironment.ts"; describe("DesktopClerk", () => {  it("derives the Clerk Frontend API hostname used by the desktop CSP", () => {    const publishableKey = `pk_test_${btoa("clerk.t3.codes$")}`;     assert.equal(      DesktopClerk.resolveDesktopClerkFrontendApiHostname(publishableKey),      "clerk.t3.codes",    );    assert.equal(DesktopClerk.resolveDesktopClerkFrontendApiHostname(""), undefined);    assert.equal(DesktopClerk.resolveDesktopClerkFrontendApiHostname("invalid"), undefined);  });   it.effect("acquires and releases the SDK bridge with the layer", () => {    const cleanup = vi.fn();    storageMock.mockReturnValue(storageAdapter);    createClerkBridgeMock.mockReturnValue({ cleanup });    const environment = DesktopEnvironment.DesktopEnvironment.of({      stateDir: "/tmp/t3-state",      isDevelopment: true,    } as unknown as DesktopEnvironment.DesktopEnvironment["Service"]);     return Effect.gen(function* () {      yield* Effect.scoped(        Layer.build(          DesktopClerk.layer.pipe(            Layer.provide(Layer.succeed(DesktopEnvironment.DesktopEnvironment, environment)),          ),        ),      );       assert.deepEqual(createClerkBridgeMock.mock.calls, [        [          {            storage: storageAdapter,            passkeys: true,            renderer: { scheme: "t3code-dev", host: "app" },          },        ],      ]);      assert.equal(cleanup.mock.calls.length, 1);      storageMock.mockClear();      createClerkBridgeMock.mockClear();    });  });   it.each([    { isDevelopment: true, scheme: "t3code-dev" },    { isDevelopment: false, scheme: "t3code" },  ])("configures the SDK with the $scheme renderer origin", ({ isDevelopment, scheme }) => {    const bridge = { cleanup: vi.fn() };    storageMock.mockReturnValue(storageAdapter);    createClerkBridgeMock.mockReturnValue(bridge);     assert.equal(DesktopClerk.createDesktopClerkBridge("/tmp/t3-state", isDevelopment), bridge);    assert.deepEqual(storageMock.mock.calls, [[{ path: "/tmp/t3-state" }]]);    assert.deepEqual(createClerkBridgeMock.mock.calls, [      [        {          storage: storageAdapter,          passkeys: true,          renderer: { scheme, host: "app" },        },      ],    ]);    storageMock.mockClear();    createClerkBridgeMock.mockClear();  });});