




















@@ -24,6 +24,16 @@ function emptyResponse(status = 204) {
2424return new Response(null, { status });
2525}
262627+function fetchGuardCallsWithMethod(method: string) {
28+return fetchWithSsrFGuard.mock.calls.filter(([request]) => {
29+const init =
30+typeof request === "object" && request !== null
31+ ? (request as { init?: RequestInit }).init
32+ : undefined;
33+return init?.method === method;
34+});
35+}
36+2737describe("mantis discord smoke runtime", () => {
2838let repoRoot: string;
2939let tokenFile: string;
@@ -109,15 +119,11 @@ describe("mantis discord smoke runtime", () => {
109119tokenSource: string;
110120message: { id: string; posted: boolean; reactionAdded: boolean };
111121};
112-expect(summary).toMatchObject({
113-status: "pass",
114-tokenSource: "file",
115-message: {
116-id: "1500000000000000001",
117-posted: true,
118-reactionAdded: true,
119-},
120-});
122+expect(summary.status).toBe("pass");
123+expect(summary.tokenSource).toBe("file");
124+expect(summary.message.id).toBe("1500000000000000001");
125+expect(summary.message.posted).toBe(true);
126+expect(summary.message.reactionAdded).toBe(true);
121127expect(await fs.readFile(result.summaryPath, "utf8")).not.toContain("test-token");
122128expect(await fs.readFile(result.reportPath, "utf8")).not.toContain("test-token");
123129});
@@ -135,11 +141,7 @@ describe("mantis discord smoke runtime", () => {
135141});
136142137143expect(result.status).toBe("pass");
138-expect(fetchWithSsrFGuard).not.toHaveBeenCalledWith(
139-expect.objectContaining({
140-init: expect.objectContaining({ method: "POST" }),
141-}),
142-);
144+expect(fetchGuardCallsWithMethod("POST")).toHaveLength(0);
143145});
144146145147it("redacts Discord target metadata in public artifacts", async () => {
@@ -171,13 +173,18 @@ describe("mantis discord smoke runtime", () => {
171173expect(text).not.toContain("1500000000000000001");
172174}
173175expect(summaryText).not.toContain("Mantis");
174-expect(JSON.parse(summaryText)).toMatchObject({
175-metadataRedaction: true,
176-bot: { id: "<redacted>", username: "<redacted>" },
177-guild: { id: "<redacted>", name: "<redacted>" },
178-channel: { id: "<redacted>", name: "<redacted>" },
179-message: { id: "<redacted>" },
180-});
176+const summary = JSON.parse(summaryText) as {
177+bot?: { id: string; username?: string };
178+channel?: { id: string; name?: string; type?: number };
179+guild?: { id: string; name?: string };
180+message?: { id: string };
181+metadataRedaction: boolean;
182+};
183+expect(summary.metadataRedaction).toBe(true);
184+expect(summary.bot).toEqual({ id: "<redacted>", username: "<redacted>" });
185+expect(summary.guild).toEqual({ id: "<redacted>", name: "<redacted>" });
186+expect(summary.channel).toEqual({ id: "<redacted>", name: "<redacted>", type: 0 });
187+expect(summary.message?.id).toBe("<redacted>");
181188});
182189183190it("fails before calling Discord when required ids are missing", async () => {
@@ -244,11 +251,7 @@ describe("mantis discord smoke runtime", () => {
244251expect(result.status).toBe("fail");
245252const errorText = await fs.readFile(path.join(result.outputDir, "error.txt"), "utf8");
246253expect(errorText).toContain("is not in guild");
247-expect(fetchWithSsrFGuard).not.toHaveBeenCalledWith(
248-expect.objectContaining({
249-init: expect.objectContaining({ method: "POST" }),
250-}),
251-);
254+expect(fetchGuardCallsWithMethod("POST")).toHaveLength(0);
252255});
253256254257it("redacts response guild ids in mismatch failure artifacts", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。