| import { describe, expect, it } from "vitest"; | |
| import { | |
| buildIrcAllowlistCandidates, | |
| normalizeIrcAllowEntry, | |
| normalizeIrcMessagingTarget, | |
| resolveIrcAllowlistMatch, | |
| } from "./normalize.js"; | |
| describe("irc normalize", () => { | |
| it("normalizes targets", () => { | |
| expect(normalizeIrcMessagingTarget("irc:channel:openclaw")).toBe("#openclaw"); | |
| expect(normalizeIrcMessagingTarget("user:alice")).toBe("alice"); | |
| expect(normalizeIrcMessagingTarget("\n")).toBeUndefined(); | |
| }); | |
| it("normalizes allowlist entries", () => { | |
| expect(normalizeIrcAllowEntry("IRC:User:Alice!u@h")).toBe("alice!u@h"); | |
| }); | |
| it("matches senders by nick/user/host candidates", () => { | |
| const message = { | |
| messageId: "m1", | |
| target: "#chan", | |
| senderNick: "Alice", | |
| senderUser: "ident", | |
| senderHost: "example.org", | |
| text: "hi", | |
| timestamp: Date.now(), | |
| isGroup: true, | |
| }; | |
| expect(buildIrcAllowlistCandidates(message)).toContain("alice!ident@example.org"); | |
| expect( | |
| resolveIrcAllowlistMatch({ | |
| allowFrom: ["alice!ident@example.org"], | |
| message, | |
| }).allowed, | |
| ).toBe(true); | |
| expect( | |
| resolveIrcAllowlistMatch({ | |
| allowFrom: ["bob"], | |
| message, | |
| }).allowed, | |
| ).toBe(false); | |
| }); | |
| }); | |