import { afterEach, describe, expect, it, vi } from "vitest"; import { forwardBareHttp } from "../src/render"; // Response headers arrive quickly, but the body intentionally arrives later. // The backend connection timeout must not abort that already-started stream. describe("Bare HTTP stream lifetime",()=>{ afterEach(()=>vi.unstubAllGlobals()); it("does not truncate slow bodies after response headers are received",async()=>{ const signals: AbortSignal[]=[]; const mock=vi.fn(async (_url: unknown, init: RequestInit)=>{ const signal=init.signal as AbortSignal; signals.push(signal); const stream=new ReadableStream({ start(controller){ const timer=setTimeout(()=>{ controller.enqueue(new TextEncoder().encode("complete-javascript-bundle")); controller.close(); },40); signal.addEventListener("abort",()=>{ clearTimeout(timer); controller.error(new Error("response was aborted after headers")); },{once:true}); }, }); return new Response(stream,{headers:{ "x-bare-status":"200", "x-bare-headers":'{"content-type":"application/javascript"}', }}); }); vi.stubGlobal("fetch",mock); const r=await forwardBareHttp( new Request("https://test.example/bare/v3/",{headers:{"x-bare-headers":"{}"}}), new URL("https://discord.com/assets/example.js"), new URL("https://jimmy.example/bare/v3/"), "test-only-jimmy-secret",10, ); expect(r.status).toBe(200); expect(await r.text()).toBe("complete-javascript-bundle"); expect(signals[0]?.aborted).toBe(false); expect(mock).toHaveBeenCalledOnce(); }); it("still aborts before response headers if the backend stalls",async()=>{ const mock=vi.fn((_url: unknown, init: RequestInit)=>new Promise((_,reject)=>{ (init.signal as AbortSignal).addEventListener("abort",()=>reject(new Error("header timeout")),{once:true}); })); vi.stubGlobal("fetch",mock); await expect(forwardBareHttp( new Request("https://test.example/bare/v3/",{headers:{"x-bare-headers":"{}"}}), new URL("https://discord.com/"), new URL("https://jimmy.example/bare/v3/"), "test-only-jimmy-secret",10, )).rejects.toThrow("header timeout"); expect(mock).toHaveBeenCalledOnce(); }); });