Files
2026-07-13 13:39:12 +08:00

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