test(security): align board key checks with current master
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
parent
ad32d2270d
commit
bbb25f3b58
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue