Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/frontend/packages/swarm-ui/test/agent-permissions.test.mjs
2026-10-30 08:52:22 +01:00

81 lines
2.9 KiB
JavaScript

// The detail panel's permissions editor: its starting selection and the
// summary line. Run by `npm test` with Node's type stripping.
import assert from "node:assert/strict";
import { test } from "node:test";
import {
editorSelection,
grantSummary,
internetBody,
internetMode,
internetSummary,
} from "../src/agent/detail/permissions.ts";
const all = ["messaging", "meta", "inbox", "execution", "manage_root_agent"];
const defaults = ["messaging", "meta", "inbox", "execution"];
test("an agent the swarm sets nothing for starts on the default set", () => {
assert.deepEqual(editorSelection(undefined, all, defaults), defaults);
});
test("a stored list is the starting selection, empty included", () => {
assert.deepEqual(
editorSelection(["meta", "manage_root_agent"], all, defaults),
["meta", "manage_root_agent"],
);
assert.deepEqual(editorSelection([], all, defaults), []);
});
test("a stored name the catalogue does not list is not offered", () => {
assert.deepEqual(editorSelection(["meta", "retired"], all, defaults), [
"meta",
]);
});
test("the summary tells unset, empty and a list apart", () => {
assert.equal(grantSummary(undefined), "the default set");
assert.equal(grantSummary([]), "none");
assert.equal(grantSummary(["meta", "inbox"]), "2 granted");
});
test("an absent internet flag reads as unrestricted, marked legacy", () => {
assert.equal(internetSummary(undefined), "unrestricted (legacy)");
assert.equal(internetSummary(true), "unrestricted");
assert.equal(internetSummary(false), "restricted");
});
test("the internet toggle sends the stored list with the flag", () => {
assert.deepEqual(internetBody(["meta", "inbox"], "restricted"), {
permissions: ["meta", "inbox"],
unrestricted_internet: false,
});
assert.deepEqual(internetBody([], "unrestricted"), {
permissions: [],
unrestricted_internet: true,
});
});
test("with no stored list the toggle leaves the list unset", () => {
assert.deepEqual(internetBody(undefined, "restricted"), {
unrestricted_internet: false,
});
});
test("log is internet_log beside an explicit false, and nothing else reads as it", () => {
assert.equal(internetMode(false, true), "log");
assert.equal(internetMode(false, undefined), "restricted");
assert.equal(internetMode(false, false), "restricted");
assert.equal(internetMode(true, true), "unrestricted");
assert.equal(internetMode(undefined, true), "unrestricted");
assert.match(internetSummary(false, true), /^log /);
assert.equal(internetSummary(false), "restricted");
});
test("the log mode keeps the old flag false and names internet_log; the others leave it out", () => {
assert.deepEqual(internetBody(["meta"], "log"), {
permissions: ["meta"],
unrestricted_internet: false,
internet_log: true,
});
assert.equal("internet_log" in internetBody([], "restricted"), false);
assert.equal("internet_log" in internetBody([], "unrestricted"), false);
});