import fs from "node:fs"; import os from "node:os"; import path from "node:path"; import { describe, expect, it } from "vitest"; import { getStoredBoardCredential, readBoardAuthStore, removeStoredBoardCredential, setStoredBoardCredential, } from "../client/board-auth.js"; function createTempAuthPath(): string { const dir = fs.mkdtempSync(path.join(os.tmpdir(), "paperclip-cli-auth-")); return path.join(dir, "auth.json"); } describe("board auth store", () => { it("returns an empty store when the file does not exist", () => { const authPath = createTempAuthPath(); expect(readBoardAuthStore(authPath)).toEqual({ version: 1, credentials: {}, }); }); it("stores and retrieves credentials by normalized api base", () => { const authPath = createTempAuthPath(); setStoredBoardCredential({ apiBase: "http://localhost:3100/", token: "token-123", userId: "user-1", storePath: authPath, }); expect(getStoredBoardCredential("http://localhost:3100", authPath)).toMatchObject({ apiBase: "http://localhost:3100", token: "token-123", userId: "user-1", }); }); it("removes stored credentials", () => { const authPath = createTempAuthPath(); setStoredBoardCredential({ apiBase: "http://localhost:3100", token: "token-123", storePath: authPath, }); expect(removeStoredBoardCredential("http://localhost:3100", authPath)).toBe(true); expect(getStoredBoardCredential("http://localhost:3100", authPath)).toBeNull(); }); });