100 lines
3.3 KiB
TypeScript
100 lines
3.3 KiB
TypeScript
import { describe, it } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
import {
|
|
createKeyGroup,
|
|
getKeyGroup,
|
|
getAllKeyGroups,
|
|
updateKeyGroup,
|
|
deleteKeyGroup,
|
|
addGroupPermission,
|
|
getGroupPermissions,
|
|
removeGroupPermission,
|
|
addKeyToGroup,
|
|
removeKeyFromGroup,
|
|
getGroupMembers,
|
|
getKeyGroupWithPermissions,
|
|
} from "../../src/lib/db/apiKeyGroups.ts";
|
|
|
|
describe("apiKeyGroups", () => {
|
|
const groupName = `test-group-${Date.now()}`;
|
|
|
|
it("createKeyGroup creates a group", () => {
|
|
const group = createKeyGroup(groupName, "Test description");
|
|
assert.ok(group.id, "should have id");
|
|
assert.equal(group.name, groupName);
|
|
assert.equal(group.description, "Test description");
|
|
});
|
|
|
|
it("getKeyGroup retrieves by id", () => {
|
|
const created = createKeyGroup(`get-${Date.now()}`);
|
|
const found = getKeyGroup(created.id);
|
|
assert.ok(found);
|
|
assert.equal(found!.id, created.id);
|
|
});
|
|
|
|
it("getAllKeyGroups returns all groups", () => {
|
|
const all = getAllKeyGroups();
|
|
assert.ok(Array.isArray(all));
|
|
assert.ok(all.length >= 1);
|
|
});
|
|
|
|
it("updateKeyGroup updates name and description", () => {
|
|
const group = createKeyGroup(`update-${Date.now()}`);
|
|
updateKeyGroup(group.id, { name: "updated-name", description: "updated-desc" });
|
|
const found = getKeyGroup(group.id);
|
|
assert.equal(found!.name, "updated-name");
|
|
assert.equal(found!.description, "updated-desc");
|
|
});
|
|
|
|
it("deleteKeyGroup removes group", () => {
|
|
const group = createKeyGroup(`delete-${Date.now()}`);
|
|
deleteKeyGroup(group.id);
|
|
assert.equal(getKeyGroup(group.id), undefined);
|
|
});
|
|
|
|
it("addGroupPermission adds permission", () => {
|
|
const group = createKeyGroup(`perm-${Date.now()}`);
|
|
addGroupPermission(group.id, "gpt-*", "allow");
|
|
const perms = getGroupPermissions(group.id);
|
|
assert.ok(perms.length >= 1);
|
|
assert.equal(perms[0].modelPattern, "gpt-*");
|
|
assert.equal(perms[0].accessType, "allow");
|
|
});
|
|
|
|
it("removeGroupPermission removes permission", () => {
|
|
const group = createKeyGroup(`rmperm-${Date.now()}`);
|
|
addGroupPermission(group.id, "claude-*", "allow");
|
|
const perms = getGroupPermissions(group.id);
|
|
removeGroupPermission(perms[0].id);
|
|
assert.equal(getGroupPermissions(group.id).length, 0);
|
|
});
|
|
|
|
it("addKeyToGroup returns boolean (INSERT OR IGNORE)", () => {
|
|
const group = createKeyGroup(`member-${Date.now()}`);
|
|
const result = addKeyToGroup("fake-key-id", group.id);
|
|
assert.equal(typeof result, "boolean");
|
|
});
|
|
|
|
it("getGroupMembers returns array", () => {
|
|
const group = createKeyGroup(`members-${Date.now()}`);
|
|
const members = getGroupMembers(group.id);
|
|
assert.ok(Array.isArray(members));
|
|
});
|
|
|
|
it("removeKeyFromGroup returns boolean", () => {
|
|
const group = createKeyGroup(`rmmember-${Date.now()}`);
|
|
const result = removeKeyFromGroup("nonexistent-key", group.id);
|
|
assert.equal(typeof result, "boolean");
|
|
});
|
|
|
|
it("getKeyGroupWithPermissions returns group with permissions", () => {
|
|
const group = createKeyGroup(`full-${Date.now()}`);
|
|
addGroupPermission(group.id, "test-*", "allow");
|
|
const full = getKeyGroupWithPermissions(group.id);
|
|
assert.ok(full);
|
|
assert.equal(full!.permissions.length, 1);
|
|
assert.equal(typeof full!.memberCount, "number");
|
|
});
|
|
});
|