mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-10-26 18:55:22 +00:00
feat(permission): integrate auto-review and hard guards
This commit is contained in:
@@ -327,4 +327,32 @@ describe("PermissionResolver", () => {
|
||||
expect(result).toEqual(["issue-1"]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("hard-guard precedence", () => {
|
||||
it("returns a hard deny before ordinary policy or session rules can allow it", () => {
|
||||
const ordinary = makePermissionManager();
|
||||
const hardGuard = makePermissionManager();
|
||||
vi.mocked(hardGuard.check).mockReturnValue({
|
||||
state: "deny",
|
||||
toolName: "read",
|
||||
source: "special",
|
||||
origin: "global",
|
||||
matchedPattern: "~/.ssh/**",
|
||||
});
|
||||
vi.mocked(hardGuard.getToolPermission).mockReturnValue("deny");
|
||||
vi.mocked(hardGuard.getConfigIssues).mockReturnValue(["hard-guard issue"]);
|
||||
const resolver = new PermissionResolver(
|
||||
ordinary,
|
||||
{ getRuleset: () => [] },
|
||||
hardGuard,
|
||||
);
|
||||
|
||||
const result = resolver.checkPermission("read", { path: "~/.ssh/id_ed25519" });
|
||||
|
||||
expect(result.state).toBe("deny");
|
||||
expect(ordinary.check).not.toHaveBeenCalled();
|
||||
expect(resolver.getToolPermission("read")).toBe("deny");
|
||||
expect(resolver.getConfigIssues()).toContain("hard-guard issue");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user