import { describe, it, expect, afterEach } from "vitest"; import { createBackend, getPassthroughBackend, clearBackendCache, } from "../backends/registry.js"; import type { VaultConfig } from "../types.js"; const baseConfig: VaultConfig = { backend: "passthrough", managedProviders: "all", }; afterEach(() => { clearBackendCache(); }); describe("Backend registry", () => { it("creates a passthrough backend", () => { const b = createBackend("passthrough", baseConfig); expect(b.name).toBe("passthrough"); }); it("creates an age backend", () => { const b = createBackend("age", { ...baseConfig, backend: "age" }); expect(b.name).toBe("age"); }); it("creates a keychain backend", () => { const b = createBackend("keychain", { ...baseConfig, backend: "keychain" }); expect(b.name).toBe("keychain"); }); it("caches instances by type", () => { const a = createBackend("passthrough", baseConfig); const b = createBackend("passthrough", baseConfig); expect(a).toBe(b); }); it("returns fresh instances after clearBackendCache", () => { const a = createBackend("passthrough", baseConfig); clearBackendCache(); const b = createBackend("passthrough", baseConfig); expect(a).not.toBe(b); }); it("getPassthroughBackend returns a passthrough", () => { const b = getPassthroughBackend(); expect(b.name).toBe("passthrough"); }); it("throws on unknown backend type", () => { expect(() => createBackend("bogus" as never, { ...baseConfig, backend: "bogus" as never }), ).toThrow("Unknown backend type"); }); });