UNPKG

convex

Version:

Client for the Convex Cloud

54 lines (45 loc) 1.77 kB
import { test, expect, describe, vi } from "vitest"; import { fileURLToPath } from "url"; import path from "path"; import { Context } from "../../../bundler/context.js"; import { generateLocalDevSecrets } from "./secrets.js"; // We test that `generateLocalDevSecrets` can correctly generate admin // keys from the CLI by using fake binaries that return mock values const fixturesDir = path.join( path.dirname(fileURLToPath(import.meta.url)), "tests", ); const successBinary = path.join(fixturesDir, "keygenSuccess.mjs"); const failureBinary = path.join(fixturesDir, "keygenFailure.mjs"); function mockContext(): Context { return { crash: vi.fn((args: { printedMessage: string | null }) => { throw new Error(args.printedMessage ?? "crash"); }), } as unknown as Context; } describe("generateLocalDevSecrets", () => { test("returns an instance secret and admin key from the binary", async () => { const ctx = mockContext(); const { instanceSecret, adminKey } = await generateLocalDevSecrets(ctx, { deploymentName: "my-deployment", latestBinaryPath: successBinary, }); // The fixture echoes back the instance name as the first part of the key. expect(adminKey).toBe("my-deployment|mock_admin_key"); // The instance secret is 32 random bytes, hex-encoded. expect(instanceSecret).toMatch(/^[0-9a-f]{64}$/); }); test("crashes when the binary fails", async () => { const ctx = mockContext(); await expect( generateLocalDevSecrets(ctx, { deploymentName: "my-deployment", latestBinaryPath: failureBinary, }), ).rejects.toThrow(); expect(vi.mocked(ctx.crash).mock.calls[0][0].printedMessage).toContain( "Failed to generate admin key", ); }); });