From e11d902b7dc9bdc30f485272aebe669ced57539f Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 11 Apr 2026 03:36:48 +0100 Subject: [PATCH] fix(ci): stop telegram debounce media leak --- extensions/telegram/src/bot.test.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/extensions/telegram/src/bot.test.ts b/extensions/telegram/src/bot.test.ts index 437fb3e0ca0..9e36469a87e 100644 --- a/extensions/telegram/src/bot.test.ts +++ b/extensions/telegram/src/bot.test.ts @@ -1398,17 +1398,24 @@ describe("createTelegramBot", () => { }, }); - const fetchSpy = vi.spyOn(globalThis, "fetch").mockImplementation( + const mediaFetch = vi.fn( async () => new Response(new Uint8Array([0x89, 0x50, 0x4e, 0x47]), { status: 200, headers: { "content-type": "image/png" }, }), ); + const ssrfMock = mockPinnedHostnameResolution(); const setTimeoutSpy = vi.spyOn(globalThis, "setTimeout"); try { const replyDelivered = waitForReplyCalls(1); - createTelegramBot({ token: "tok" }); + createTelegramBot({ + token: "tok", + telegramTransport: { + fetch: mediaFetch as typeof fetch, + sourceFetch: mediaFetch as typeof fetch, + }, + }); const handler = getOnHandler("message") as (ctx: Record) => Promise; await handler({ @@ -1465,9 +1472,10 @@ describe("createTelegramBot", () => { expect(getFileSpy).toHaveBeenCalledTimes(1); expect(getFileSpy).toHaveBeenCalledWith("reply-photo-1"); + expect(mediaFetch).toHaveBeenCalledTimes(1); } finally { setTimeoutSpy.mockRestore(); - fetchSpy.mockRestore(); + ssrfMock.mockRestore(); } });