test(security): align board key checks with current master

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Dotta 2026-08-15 19:20:40 +00:00 committed by cryppadotta
parent ad32d2270d
commit bbb25f3b58
2 changed files with 16 additions and 6 deletions

View File

@ -208,6 +208,9 @@ export const BOARD_KEY_ROUTE_INVENTORY: readonly string[] = [
"board_key_denied | deny | /api/cli-auth/{*path}",
"board_key_denied | deny | /api/cloud/{*path}",
"board_key_denied | deny | /api/companies/{id}/adapters/{id}/detect-model",
"board_key_denied | deny | /api/companies/{id}/adapters/{id}/login-sessions",
"board_key_denied | deny | /api/companies/{id}/adapters/{id}/login-sessions/{id}",
"board_key_denied | deny | /api/companies/{id}/adapters/{id}/login-sessions/{id}/cancel",
"board_key_denied | deny | /api/companies/{id}/adapters/{id}/model-profiles",
"board_key_denied | deny | /api/companies/{id}/adapters/{id}/models",
"board_key_denied | deny | /api/companies/{id}/adapters/{id}/test-environment",

View File

@ -4,28 +4,35 @@ import { boardAuthService } from "./board-auth.js";
describe("boardAuthService touchBoardApiKey", () => {
it("retries the audit write after a transient failure", async () => {
const writes = [Promise.reject(new Error("transient")), Promise.resolve([])];
const writes = [
Promise.reject(new Error("transient")),
Promise.resolve([{ id: "key-1" }]),
];
const update = vi.fn(() => ({
set: () => ({
where: () => writes.shift(),
where: () => ({
returning: () => writes.shift(),
}),
}),
}));
const service = boardAuthService({ update } as unknown as Db);
await expect(service.touchBoardApiKey("key-1")).rejects.toThrow("transient");
await expect(service.touchBoardApiKey("key-1")).resolves.toBeUndefined();
await expect(service.touchBoardApiKey("key-1")).resolves.toEqual({ id: "key-1" });
expect(update).toHaveBeenCalledTimes(2);
});
it("shares one in-flight audit write across concurrent touches", async () => {
let releaseWrite: (() => void) | undefined;
const write = new Promise<void>((resolve) => {
releaseWrite = resolve;
const write = new Promise<Array<{ id: string }>>((resolve) => {
releaseWrite = () => resolve([{ id: "key-1" }]);
});
const update = vi.fn(() => ({
set: () => ({
where: () => write,
where: () => ({
returning: () => write,
}),
}),
}));
const service = boardAuthService({ update } as unknown as Db);