53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
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();
|
|
});
|
|
});
|