mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-08-28 16:45:22 +00:00
62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
import { describe, expect, test } from "vitest";
|
|
|
|
import { mergeFlatPermissions } from "#src/permission-merge";
|
|
|
|
describe("mergeFlatPermissions", () => {
|
|
test("string replaces string", () => {
|
|
const result = mergeFlatPermissions({ tools: "ask" }, { tools: "allow" });
|
|
expect(result).toEqual({ tools: "allow" });
|
|
});
|
|
|
|
test("both objects → shallow-merge pattern maps", () => {
|
|
const result = mergeFlatPermissions(
|
|
{ bash: { "rm *": "deny", "git *": "ask" } },
|
|
{ bash: { "rm *": "allow", "npm *": "allow" } },
|
|
);
|
|
expect(result).toEqual({
|
|
bash: { "rm *": "allow", "git *": "ask", "npm *": "allow" },
|
|
});
|
|
});
|
|
|
|
test("object replaces string", () => {
|
|
const result = mergeFlatPermissions(
|
|
{ tools: "ask" },
|
|
{ tools: { Write: "deny" } },
|
|
);
|
|
expect(result).toEqual({ tools: { Write: "deny" } });
|
|
});
|
|
|
|
test("string replaces object", () => {
|
|
const result = mergeFlatPermissions(
|
|
{ tools: { Write: "deny" } },
|
|
{ tools: "allow" },
|
|
);
|
|
expect(result).toEqual({ tools: "allow" });
|
|
});
|
|
|
|
test("empty override returns base unchanged", () => {
|
|
const base = { tools: "ask" as const, bash: { "rm *": "deny" as const } };
|
|
const result = mergeFlatPermissions(base, {});
|
|
expect(result).toEqual(base);
|
|
});
|
|
|
|
test("empty base returns override", () => {
|
|
const override = { tools: "allow" as const };
|
|
const result = mergeFlatPermissions({}, override);
|
|
expect(result).toEqual(override);
|
|
});
|
|
|
|
test("preserves keys only in base", () => {
|
|
const result = mergeFlatPermissions(
|
|
{ tools: "ask", bash: "deny" },
|
|
{ tools: "allow" },
|
|
);
|
|
expect(result).toEqual({ tools: "allow", bash: "deny" });
|
|
});
|
|
|
|
test("adds keys only in override", () => {
|
|
const result = mergeFlatPermissions({ tools: "ask" }, { bash: "allow" });
|
|
expect(result).toEqual({ tools: "ask", bash: "allow" });
|
|
});
|
|
});
|