import { get, PNG, stubNetwork } from "../helpers.ts"; import { assertEquals } from "@std/assert"; Deno.test("GET /api/proxy-image: rasters only, fetched once for everyone", async () => { using net = stubNetwork((url) => url.pathname.endsWith(".svg") ? new Response("", { headers: { "content-type": "image/svg+xml" } }) : new Response(PNG, { headers: { "content-type": "image/png" } }) ); const path = `/api/proxy-image?url=${ encodeURIComponent("https://cdn.example.com/a.png") }`; const first = await get(path); assertEquals(first.status, 200); assertEquals(first.headers.get("content-type"), "image/png"); assertEquals(first.bytes, PNG); const second = await get(path); assertEquals(second.bytes, PNG); assertEquals(net.calls.length, 1); const svg = await get( `/api/proxy-image?url=${ encodeURIComponent("https://cdn.example.com/a.svg") }`, ); assertEquals(svg.status, 400); }); Deno.test("GET /api/proxy-image: an error answer is never served nor cached", async () => { let failing = true; using net = stubNetwork(() => failing ? new Response(PNG, { status: 503, headers: { "content-type": "image/png" }, }) : new Response(PNG, { headers: { "content-type": "image/png" } }) ); const path = `/api/proxy-image?url=${ encodeURIComponent("https://cdn.example.com/flaky.png") }`; assertEquals((await get(path)).status, 400); failing = false; assertEquals((await get(path)).status, 200); assertEquals(net.calls.length, 2); });