import { describe, it, expect, beforeEach } from "vitest";
import { getBuiltinPolicies } from "../../src/hooks/builtin-policies";
import { allow, deny } from "../../src/hooks/policy-types";
describe("block-sudo", () => {
const policy = getBuiltinPolicies().find((p) => p.name === "block-sudo")!;
it("denies sudo commands", () => {
const ctx = {
eventType: "PreToolUse" as const,
payload: {},
toolName: "Bash",
toolInput: { command: "sudo apt install nodejs" },
params: { allowPatterns: [] },
};
expect(policy.fn(ctx)).toEqual(deny("sudo command blocked by failproofai"));
});
it("allows non-sudo commands", () => {
const ctx = {
eventType: "PreToolUse" as const,
payload: {},
toolName: "Bash",
toolInput: { command: "ls -la" },
params: { allowPatterns: [] },
};
expect(policy.fn(ctx)).toEqual(allow());
});
it("allows patterns in allowPatterns", () => {
const ctx = {
eventType: "PreToolUse" as const,
payload: {},
toolName: "Bash",
toolInput: { command: "sudo systemctl status nginx" },
params: { allowPatterns: ["sudo systemctl status"] },
};
expect(policy.fn(ctx)).toEqual(allow());
});
});