1import type { DesktopBridge } from "@t3tools/contracts";
2import { afterEach, beforeEach, describe, expect, it, vi } from "@effect/vitest";
3
4import { __resetDesktopPrimaryAuthForTests, readDesktopPrimaryBearerToken } from "./desktopAuth";
5
6describe("desktop primary auth", () => {
7 beforeEach(() => {
8 Object.defineProperty(globalThis, "window", {
9 configurable: true,
10 value: {},
11 });
12 });
13
14 afterEach(() => {
15 __resetDesktopPrimaryAuthForTests();
16 Reflect.deleteProperty(globalThis, "window");
17 });
18
19 it("reuses the main-process bearer token across renderer requests", async () => {
20 const getLocalEnvironmentBearerToken = vi.fn().mockResolvedValue("desktop-bearer-token");
21 window.desktopBridge = {
22 getLocalEnvironmentBearerToken,
23 } as unknown as DesktopBridge;
24
25 await expect(readDesktopPrimaryBearerToken()).resolves.toBe("desktop-bearer-token");
26 await expect(readDesktopPrimaryBearerToken()).resolves.toBe("desktop-bearer-token");
27 expect(getLocalEnvironmentBearerToken).toHaveBeenCalledTimes(1);
28 });
29
30 it("does not require desktop auth in a browser", async () => {
31 await expect(readDesktopPrimaryBearerToken()).resolves.toBeNull();
32 });
33});