60 lines · 1.5 KB · TypeScript
RawDownload
import { createPasskeys } from "@clerk/electron/passkeys";import { afterEach, describe, expect, it, vi } from "vite-plus/test"; const publicKeyOptions = {  allowCredentials: [],  challenge: new Uint8Array([1]),  rpId: "clerk.t3.codes",  timeout: 60_000,  userVerification: "preferred" as const,}; const stubNativePasskeys = () => {  const get = vi.fn().mockResolvedValue({    ok: false,    error: { code: "cancelled", message: "user cancelled" },  });   vi.stubGlobal("location", { protocol: "t3code:", hostname: "app" });  vi.stubGlobal("window", {    PublicKeyCredential: vi.fn(),    __clerk_internal_electron_passkeys: {      platform: "darwin",      electronMajor: 41,      get,    },  });   return get;}; describe("Electron passkeys", () => {  afterEach(() => {    vi.unstubAllGlobals();  });   it("does not send an autofill request to the native bridge", async () => {    const get = stubNativePasskeys();    const passkeys = createPasskeys();     const result = await passkeys.get({      publicKeyOptions,      conditionalUI: true,    });     expect(get).not.toHaveBeenCalled();    expect(result.error).toMatchObject({ code: "passkey_operation_aborted" });  });   it("sends an explicit passkey request to the native bridge", async () => {    const get = stubNativePasskeys();    const passkeys = createPasskeys();     await passkeys.get({      publicKeyOptions,      conditionalUI: false,    });     expect(get).toHaveBeenCalledOnce();  });});