import { describe, expect, it } from "vitest"; import type { ClawdbotConfig } from "../config/config.js"; import type { SessionEntry } from "../config/sessions.js"; import { resolveSendPolicy } from "./send-policy.js"; describe("resolveSendPolicy", () => { it("defaults to allow", () => { const cfg = {} as ClawdbotConfig; expect(resolveSendPolicy({ cfg })).toBe("allow"); }); it("entry override wins", () => { const cfg = { session: { sendPolicy: { default: "allow" } }, } as ClawdbotConfig; const entry: SessionEntry = { sessionId: "s", updatedAt: 0, sendPolicy: "deny", }; expect(resolveSendPolicy({ cfg, entry })).toBe("deny"); }); it("rule match by provider + chatType", () => { const cfg = { session: { sendPolicy: { default: "allow", rules: [ { action: "deny", match: { provider: "discord", chatType: "group" }, }, ], }, }, } as ClawdbotConfig; const entry: SessionEntry = { sessionId: "s", updatedAt: 0, provider: "discord", chatType: "group", }; expect( resolveSendPolicy({ cfg, entry, sessionKey: "discord:group:dev" }), ).toBe("deny"); }); it("rule match by keyPrefix", () => { const cfg = { session: { sendPolicy: { default: "allow", rules: [{ action: "deny", match: { keyPrefix: "cron:" } }], }, }, } as ClawdbotConfig; expect(resolveSendPolicy({ cfg, sessionKey: "cron:job-1" })).toBe("deny"); }); });