import { describe, expect, it } from "vitest"; import { __testing } from "./monitor.js"; describe("zalo group policy access", () => { it("defaults missing provider config to allowlist", () => { const resolved = __testing.resolveZaloRuntimeGroupPolicy({ providerConfigPresent: false, groupPolicy: undefined, defaultGroupPolicy: "open", }); expect(resolved).toEqual({ groupPolicy: "allowlist", providerMissingFallbackApplied: true, }); }); it("blocks all group messages when policy is disabled", () => { const decision = __testing.evaluateZaloGroupAccess({ providerConfigPresent: true, configuredGroupPolicy: "disabled", defaultGroupPolicy: "open", groupAllowFrom: ["zalo:123"], senderId: "123", }); expect(decision).toMatchObject({ allowed: false, groupPolicy: "disabled", reason: "disabled", }); }); it("blocks group messages on allowlist policy with empty allowlist", () => { const decision = __testing.evaluateZaloGroupAccess({ providerConfigPresent: true, configuredGroupPolicy: "allowlist", defaultGroupPolicy: "open", groupAllowFrom: [], senderId: "attacker", }); expect(decision).toMatchObject({ allowed: false, groupPolicy: "allowlist", reason: "empty_allowlist", }); }); it("blocks sender not in group allowlist", () => { const decision = __testing.evaluateZaloGroupAccess({ providerConfigPresent: true, configuredGroupPolicy: "allowlist", defaultGroupPolicy: "open", groupAllowFrom: ["zalo:victim-user-001"], senderId: "attacker-user-999", }); expect(decision).toMatchObject({ allowed: false, groupPolicy: "allowlist", reason: "sender_not_allowlisted", }); }); it("allows sender in group allowlist", () => { const decision = __testing.evaluateZaloGroupAccess({ providerConfigPresent: true, configuredGroupPolicy: "allowlist", defaultGroupPolicy: "open", groupAllowFrom: ["zl:12345"], senderId: "12345", }); expect(decision).toMatchObject({ allowed: true, groupPolicy: "allowlist", reason: "allowed", }); }); it("allows any sender with wildcard allowlist", () => { const decision = __testing.evaluateZaloGroupAccess({ providerConfigPresent: true, configuredGroupPolicy: "allowlist", defaultGroupPolicy: "open", groupAllowFrom: ["*"], senderId: "random-user", }); expect(decision).toMatchObject({ allowed: true, groupPolicy: "allowlist", reason: "allowed", }); }); it("allows all group senders on open policy", () => { const decision = __testing.evaluateZaloGroupAccess({ providerConfigPresent: true, configuredGroupPolicy: "open", defaultGroupPolicy: "allowlist", groupAllowFrom: [], senderId: "attacker-user-999", }); expect(decision).toMatchObject({ allowed: true, groupPolicy: "open", reason: "allowed", }); }); });