| 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(); |
| }); |
| }); |
|
|