Spaces:
Paused
Paused
| import { beforeEach, describe, expect, it, vi } from "vitest"; | |
| describe("telegram audit", () => { | |
| beforeEach(() => { | |
| vi.unstubAllGlobals(); | |
| }); | |
| it("collects unmentioned numeric group ids and flags wildcard", async () => { | |
| const { collectTelegramUnmentionedGroupIds } = await import("./audit.js"); | |
| const res = collectTelegramUnmentionedGroupIds({ | |
| "*": { requireMention: false }, | |
| "-1001": { requireMention: false }, | |
| "@group": { requireMention: false }, | |
| "-1002": { requireMention: true }, | |
| "-1003": { requireMention: false, enabled: false }, | |
| }); | |
| expect(res.hasWildcardUnmentionedGroups).toBe(true); | |
| expect(res.groupIds).toEqual(["-1001"]); | |
| expect(res.unresolvedGroups).toBe(1); | |
| }); | |
| it("audits membership via getChatMember", async () => { | |
| const { auditTelegramGroupMembership } = await import("./audit.js"); | |
| vi.stubGlobal( | |
| "fetch", | |
| vi.fn().mockResolvedValueOnce( | |
| new Response(JSON.stringify({ ok: true, result: { status: "member" } }), { | |
| status: 200, | |
| headers: { "Content-Type": "application/json" }, | |
| }), | |
| ), | |
| ); | |
| const res = await auditTelegramGroupMembership({ | |
| token: "t", | |
| botId: 123, | |
| groupIds: ["-1001"], | |
| timeoutMs: 5000, | |
| }); | |
| expect(res.ok).toBe(true); | |
| expect(res.groups[0]?.chatId).toBe("-1001"); | |
| expect(res.groups[0]?.status).toBe("member"); | |
| }); | |
| it("reports bot not in group when status is left", async () => { | |
| const { auditTelegramGroupMembership } = await import("./audit.js"); | |
| vi.stubGlobal( | |
| "fetch", | |
| vi.fn().mockResolvedValueOnce( | |
| new Response(JSON.stringify({ ok: true, result: { status: "left" } }), { | |
| status: 200, | |
| headers: { "Content-Type": "application/json" }, | |
| }), | |
| ), | |
| ); | |
| const res = await auditTelegramGroupMembership({ | |
| token: "t", | |
| botId: 123, | |
| groupIds: ["-1001"], | |
| timeoutMs: 5000, | |
| }); | |
| expect(res.ok).toBe(false); | |
| expect(res.groups[0]?.ok).toBe(false); | |
| expect(res.groups[0]?.status).toBe("left"); | |
| }); | |
| }); | |