66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
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");
|
|
});
|
|
});
|