import { afterEach, describe, expect, it, vi } from "vitest"; import packageInfo from "../../package.json"; import { clientRuntime } from "./clientRuntime"; import { getAppMetadata } from "./appMetadata"; afterEach(() => { Reflect.deleteProperty(window, "__TAURI_INTERNALS__"); vi.unstubAllEnvs(); }); describe("client runtime", () => { it("reports a web runtime with desktop capabilities disabled", () => { expect(getAppMetadata()).toMatchObject({ version: packageInfo.version, commit: "local", channel: "local", clientType: "web", platform: "web", }); expect(clientRuntime.capabilities()).toEqual({ serverConfiguration: false, nativeFiles: false, systemNotifications: false, secureSessionStorage: false, automaticUpdates: false, }); }); it("exposes only the implemented desktop capability", () => { Object.defineProperty(window, "__TAURI_INTERNALS__", { value: {}, configurable: true }); expect(getAppMetadata().clientType).toBe("desktop"); expect(clientRuntime.capabilities().serverConfiguration).toBe(true); expect(clientRuntime.capabilities().secureSessionStorage).toBe(false); }); it("accepts release build metadata only from the expected CI values", () => { vi.stubEnv("VITE_BUILD_CHANNEL", "release"); vi.stubEnv("VITE_BUILD_COMMIT", "0123456789abcdef0123456789abcdef01234567"); expect(getAppMetadata()).toMatchObject({ channel: "release", commit: "0123456789abcdef0123456789abcdef01234567", }); }); it("does not expose arbitrary build metadata strings", () => { vi.stubEnv("VITE_BUILD_CHANNEL", "feature/demo"); vi.stubEnv("VITE_BUILD_COMMIT", "token=secret"); expect(getAppMetadata()).toMatchObject({ channel: "local", commit: "local", }); }); });