diff options
-rw-r--r-- | test/js/bun/http/bun-server.test.ts | 21 | ||||
-rw-r--r-- | test/js/bun/http/fetch-file-upload.test.ts | 16 | ||||
-rw-r--r-- | test/js/bun/http/serve.test.ts | 102 | ||||
-rw-r--r-- | test/js/bun/plugin/plugins.test.ts | 8 | ||||
-rw-r--r-- | test/js/bun/websocket/websocket-server.test.ts | 9 | ||||
-rw-r--r-- | test/js/web/fetch/fetch-gzip.test.ts | 23 |
6 files changed, 102 insertions, 77 deletions
diff --git a/test/js/bun/http/bun-server.test.ts b/test/js/bun/http/bun-server.test.ts index e82e2cab0..639fefe1b 100644 --- a/test/js/bun/http/bun-server.test.ts +++ b/test/js/bun/http/bun-server.test.ts @@ -1,7 +1,11 @@ import { describe, expect, test } from "bun:test"; import { bunExe, bunEnv } from "harness"; import path from "path"; - +import { isIPv6 } from "net"; +import type { Server, TCPSocketListener } from "bun"; +function getServerUrl(server: Server | TCPSocketListener) { + return isIPv6(server.hostname) ? `http://[${server.hostname}]:${server.port}` : `http://${server.hostname}:${server.port}`; +} describe("Server", () => { test("normlizes incoming request URLs", async () => { const server = Bun.serve({ @@ -153,8 +157,7 @@ describe("Server", () => { }, port: 0, }); - - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe("Hello"); server.stop(true); }); @@ -206,7 +209,7 @@ describe("Server", () => { }); try { - await fetch(`http://${server.hostname}:${server.port}`, { signal: abortController.signal }); + await fetch(getServerUrl(server), { signal: abortController.signal }); } catch {} expect(signalOnServer).toBe(true); server.stop(true); @@ -229,7 +232,7 @@ describe("Server", () => { }); try { - await fetch(`http://${server.hostname}:${server.port}`, { signal: abortController.signal }); + await fetch(getServerUrl(server), { signal: abortController.signal }); } catch {} expect(signalOnServer).toBe(false); server.stop(true); @@ -274,7 +277,7 @@ describe("Server", () => { }); try { - await fetch(`http://${server.hostname}:${server.port}`, { signal: abortController.signal }); + await fetch(getServerUrl(server), { signal: abortController.signal }); } catch {} await Bun.sleep(10); expect(signalOnServer).toBe(true); @@ -289,7 +292,7 @@ describe("Server", () => { }, }); try { - const url = `http://${server.hostname}:${server.port}/`; + const url = getServerUrl(server); const response = await server.fetch(url); expect(await response.text()).toBe("Hello World!"); expect(response.status).toBe(200); @@ -306,7 +309,7 @@ describe("Server", () => { }, }); try { - const url = `http://${server.hostname}:${server.port}/`; + const url = getServerUrl(server); const response = await server.fetch(new Request(url)); expect(await response.text()).toBe("Hello World!"); expect(response.status).toBe(200); @@ -352,7 +355,7 @@ describe("Server", () => { }); try { - await fetch(`http://${server.hostname}:${server.port}`, { signal: abortController.signal }); + await fetch(getServerUrl(server), { signal: abortController.signal }); } catch {} await Bun.sleep(10); expect(signalOnServer).toBe(true); diff --git a/test/js/bun/http/fetch-file-upload.test.ts b/test/js/bun/http/fetch-file-upload.test.ts index 197470b9d..479610767 100644 --- a/test/js/bun/http/fetch-file-upload.test.ts +++ b/test/js/bun/http/fetch-file-upload.test.ts @@ -2,7 +2,11 @@ import { expect, test, describe } from "bun:test"; import { withoutAggressiveGC } from "harness"; import { tmpdir } from "os"; import { join } from "path"; - +import { isIPv6 } from "net"; +import type { Server, TCPSocketListener } from "bun"; +function getServerUrl(server: Server | TCPSocketListener) { + return isIPv6(server.hostname) ? `http://[${server.hostname}]:${server.port}` : `http://${server.hostname}:${server.port}`; +} test("uploads roundtrip", async () => { const body = Bun.file(import.meta.dir + "/fetch.js.txt"); const bodyText = await body.text(); @@ -19,7 +23,7 @@ test("uploads roundtrip", async () => { }); // @ts-ignore - const reqBody = new Request(`http://${server.hostname}:${server.port}`, { + const reqBody = new Request(getServerUrl(server), { body, method: "POST", }); @@ -51,7 +55,7 @@ test("formData uploads roundtrip, with a call to .body", async () => { }); // @ts-ignore - const reqBody = new Request(`http://${server.hostname}:${server.port}`, { + const reqBody = new Request(getServerUrl(server), { body, method: "POST", }); @@ -91,7 +95,7 @@ test("req.formData throws error when stream is in use", async () => { }); // @ts-ignore - const reqBody = new Request(`http://${server.hostname}:${server.port}`, { + const reqBody = new Request(getServerUrl(server), { body, method: "POST", }); @@ -117,7 +121,7 @@ test("formData uploads roundtrip, without a call to .body", async () => { }); // @ts-ignore - const reqBody = new Request(`http://${server.hostname}:${server.port}`, { + const reqBody = new Request(getServerUrl(server), { body, method: "POST", }); @@ -148,7 +152,7 @@ test("uploads roundtrip with sendfile()", async () => { }, }); - const resp = await fetch("http://" + server.hostname + ":" + server.port, { + const resp = await fetch(getServerUrl(server), { body: Bun.file(path), method: "PUT", }); diff --git a/test/js/bun/http/serve.test.ts b/test/js/bun/http/serve.test.ts index b6ef75b54..57cc8718d 100644 --- a/test/js/bun/http/serve.test.ts +++ b/test/js/bun/http/serve.test.ts @@ -1,4 +1,4 @@ -import { file, gc, Serve, serve, Server } from "bun"; +import { file, gc, Serve, serve } from "bun"; import { afterEach, describe, it, expect, afterAll } from "bun:test"; import { readFileSync, writeFileSync } from "fs"; import { join, resolve } from "path"; @@ -7,7 +7,11 @@ import { renderToReadableStream } from "react-dom/server"; import app_jsx from "./app.jsx"; import { spawn } from "child_process"; import { tmpdir } from "os"; - +import { isIPv6 } from "net"; +import type { Server, TCPSocketListener } from "bun"; +function getServerUrl(server: Server | TCPSocketListener) { + return isIPv6(server.hostname) ? `http://[${server.hostname}]:${server.port}` : `http://${server.hostname}:${server.port}`; +} type Handler = (req: Request) => Response; afterEach(() => gc(true)); @@ -49,7 +53,7 @@ afterAll(() => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(response.status).toBe(Number(statusCode)); expect(await response.text()).toBe("Foo Bar"); }, @@ -71,7 +75,7 @@ afterAll(() => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(response.status).toBe(500); expect(await response.text()).toBe("Error!"); }, @@ -88,7 +92,7 @@ it("should display a welcome message when the response value type is incorrect", }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); const text = await response.text(); expect(text).toContain("Welcome to Bun!"); }, @@ -112,7 +116,7 @@ it("request.signal works in trivial case", async () => { }, async server => { try { - await fetch(`http://${server.hostname}:${server.port}`, { signal: aborty.signal }); + await fetch(getServerUrl(server), { signal: aborty.signal }); throw new Error("Expected fetch to throw"); } catch (e: any) { expect(e.name).toBe("AbortError"); @@ -142,7 +146,7 @@ it("request.signal works in leaky case", async () => { }, }, async server => { - expect(async () => fetch(`http://${server.hostname}:${server.port}`, { signal: aborty.signal })).toThrow( + expect(async () => fetch(getServerUrl(server), { signal: aborty.signal })).toThrow( "The operation was aborted.", ); @@ -163,7 +167,7 @@ it("should work for a file", async () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); }, ); @@ -200,7 +204,7 @@ it("request.url should be based on the Host header", async () => { }, }, async server => { - const expected = `http://${server.hostname}:${server.port}/helloooo`; + const expected = `${getServerUrl(server)}/helloooo`; const response = await fetch(expected, { headers: { Host: "example.com", @@ -240,7 +244,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(response.status).toBe(402); expect(response.headers.get("I-AM")).toBe("A-TEAPOT"); expect(await response.text()).toBe(""); @@ -270,7 +274,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); // connection terminated expect(await response.text()).toBe(""); expect(response.status).toBe(options.status ?? 200); @@ -325,7 +329,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); const text = await response.text(); expect(text.length).toBe(textToExpect.length); expect(text).toBe(textToExpect); @@ -350,7 +354,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); }, ); @@ -377,7 +381,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(response.status).toBe(200); expect(await response.text()).toBe("Test Passed"); }, @@ -408,7 +412,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(response.status).toBe(500); }, ); @@ -435,7 +439,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(response.status).toBe(500); expect(await response.text()).toBe("Fail"); expect(pass).toBe(true); @@ -466,7 +470,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); }, ); @@ -489,7 +493,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); const text = await response.text(); expect(text).toBe(textToExpect); }, @@ -517,7 +521,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); }, ); @@ -553,7 +557,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); count++; }, @@ -582,7 +586,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); }, ); @@ -612,7 +616,7 @@ describe("streaming", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); }, ); @@ -627,7 +631,7 @@ it("should work for a hello world", async () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe("Hello, world!"); }, ); @@ -643,7 +647,7 @@ it("should work for a blob", async () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); }, ); @@ -659,7 +663,7 @@ it("should work for a blob stream", async () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); }, ); @@ -675,7 +679,7 @@ it("should work for a file stream", async () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); }, ); @@ -695,7 +699,7 @@ it("fetch should work with headers", async () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`, { + const response = await fetch(getServerUrl(server), { headers: { "X-Foo": "bar", }, @@ -717,7 +721,7 @@ it(`should work for a file ${count} times serial`, async () => { }, async server => { for (let i = 0; i < count; i++) { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); } }, @@ -734,7 +738,7 @@ it(`should work for ArrayBuffer ${count} times serial`, async () => { }, async server => { for (let i = 0; i < count; i++) { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe(textToExpect); } }, @@ -753,11 +757,11 @@ describe("parallel", () => { async server => { for (let i = 0; i < count; ) { let responses = await Promise.all([ - fetch(`http://${server.hostname}:${server.port}`), - fetch(`http://${server.hostname}:${server.port}`), - fetch(`http://${server.hostname}:${server.port}`), - fetch(`http://${server.hostname}:${server.port}`), - fetch(`http://${server.hostname}:${server.port}`), + fetch(getServerUrl(server)), + fetch(getServerUrl(server)), + fetch(getServerUrl(server)), + fetch(getServerUrl(server)), + fetch(getServerUrl(server)), ]); for (let response of responses) { @@ -779,11 +783,11 @@ describe("parallel", () => { async server => { for (let i = 0; i < count; ) { let responses = await Promise.all([ - fetch(`http://${server.hostname}:${server.port}`), - fetch(`http://${server.hostname}:${server.port}`), - fetch(`http://${server.hostname}:${server.port}`), - fetch(`http://${server.hostname}:${server.port}`), - fetch(`http://${server.hostname}:${server.port}`), + fetch(getServerUrl(server)), + fetch(getServerUrl(server)), + fetch(getServerUrl(server)), + fetch(getServerUrl(server)), + fetch(getServerUrl(server)), ]); for (let response of responses) { @@ -804,10 +808,10 @@ it("should support reloading", async () => { fetch: first, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(await response.text()).toBe("first"); server.reload({ fetch: second }); - const response2 = await fetch(`http://${server.hostname}:${server.port}`); + const response2 = await fetch(getServerUrl(server)); expect(await response2.text()).toBe("second"); }, ); @@ -885,7 +889,7 @@ describe("status code text", () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(response.status).toBe(parseInt(code)); expect(response.statusText).toBe(fixture[code]); }, @@ -908,7 +912,7 @@ it("should support multiple Set-Cookie headers", async () => { }, }, async server => { - const response = await fetch(`http://${server.hostname}:${server.port}`); + const response = await fetch(getServerUrl(server)); expect(response.headers.getAll("Set-Cookie")).toEqual(["foo=bar", "baz=qux"]); expect(response.headers.get("Set-Cookie")).toEqual("foo=bar, baz=qux"); @@ -964,7 +968,7 @@ describe("should support Content-Range with Bun.file()", () => { for (const [start, end] of good) { it(`good range: ${start} - ${end}`, async () => { await getServer(async server => { - const response = await fetch(`http://${server.hostname}:${server.port}/?start=${start}&end=${end}`, { + const response = await fetch(`${getServerUrl(server)}/?start=${start}&end=${end}`, { verbose: true, }); expect(await response.arrayBuffer()).toEqual(full.buffer.slice(start, end)); @@ -988,7 +992,7 @@ describe("should support Content-Range with Bun.file()", () => { for (const [start, end] of emptyRanges) { it(`empty range: ${start} - ${end}`, async () => { await getServer(async server => { - const response = await fetch(`http://${server.hostname}:${server.port}/?start=${start}&end=${end}`); + const response = await fetch(`${getServerUrl(server)}/?start=${start}&end=${end}`); const out = await response.arrayBuffer(); expect(out).toEqual(new ArrayBuffer(0)); expect(response.status).toBe(206); @@ -1010,7 +1014,7 @@ describe("should support Content-Range with Bun.file()", () => { for (const [start, end] of badRanges) { it(`bad range: ${start} - ${end}`, async () => { await getServer(async server => { - const response = await fetch(`http://${server.hostname}:${server.port}/?start=${start}&end=${end}`); + const response = await fetch(`http://${getServerUrl(server)}/?start=${start}&end=${end}`); const out = await response.arrayBuffer(); expect(out).toEqual(new ArrayBuffer(0)); expect(response.status).toBe(206); @@ -1051,7 +1055,7 @@ it("request body and signal life cycle", async () => { const requests = []; for (let j = 0; j < 10; j++) { for (let i = 0; i < 250; i++) { - requests.push(fetch(`http://${server.hostname}:${server.port}`)); + requests.push(fetch(getServerUrl(server))); } await Promise.all(requests); @@ -1084,7 +1088,7 @@ it("propagates content-type from a Bun.file()'s file path in fetch()", async () }); // @ts-ignore - const reqBody = new Request(`http://${server.hostname}:${server.port}`, { + const reqBody = new Request(getServerUrl(server), { body, method: "POST", }); @@ -1109,7 +1113,7 @@ it("does propagate type for Blob", async () => { const body = new Blob(["hey"], { type: "text/plain;charset=utf-8" }); // @ts-ignore - const res = await fetch(`http://${server.hostname}:${server.port}`, { + const res = await fetch(getServerUrl(server), { body, method: "POST", }); diff --git a/test/js/bun/plugin/plugins.test.ts b/test/js/bun/plugin/plugins.test.ts index c2827f600..f8408b920 100644 --- a/test/js/bun/plugin/plugins.test.ts +++ b/test/js/bun/plugin/plugins.test.ts @@ -2,7 +2,11 @@ import { plugin } from "bun"; import { describe, expect, it } from "bun:test"; import { resolve } from "path"; - +import { isIPv6 } from "net"; +import type { Server, TCPSocketListener } from "bun"; +function getServerUrl(server: Server | TCPSocketListener) { + return isIPv6(server.hostname) ? `http://[${server.hostname}]:${server.port}` : `http://${server.hostname}:${server.port}`; +} declare global { var failingObject: any; var objectModuleResult: any; @@ -397,7 +401,7 @@ describe("errors", () => { return new Response(result); }, }); - const { default: text } = await import(`http://${server.hostname}:${server.port}/hey.txt`); + const { default: text } = await import(`${getServerUrl(server)}/hey.txt`); expect(text).toBe(result); }); }); diff --git a/test/js/bun/websocket/websocket-server.test.ts b/test/js/bun/websocket/websocket-server.test.ts index dfe23e57f..3b74067a9 100644 --- a/test/js/bun/websocket/websocket-server.test.ts +++ b/test/js/bun/websocket/websocket-server.test.ts @@ -1,8 +1,13 @@ import { describe, it, expect, afterEach } from "bun:test"; -import type { Server, Subprocess, WebSocketHandler } from "bun"; +import type { Server, Subprocess, WebSocketHandler, TCPSocketListener } from "bun"; import { serve, spawn } from "bun"; import { bunEnv, bunExe, nodeExe } from "harness"; import { isIP } from "node:net"; +import { isIPv6 } from "net"; +function getServerUrl(server: Server | TCPSocketListener) { + return isIPv6(server.hostname) ? `ws://[${server.hostname}]:${server.port}` : `ws://${server.hostname}:${server.port}`; +} + const strings = [ { label: "string (ascii)", @@ -588,7 +593,7 @@ function test( } async function connect(server: Server): Promise<void> { - const url = new URL(`ws://${server.hostname}:${server.port}/`); + const url = new URL(getServerUrl(server)); const { pathname } = new URL("./websocket-client-echo.mjs", import.meta.url); // @ts-ignore const client = spawn({ diff --git a/test/js/web/fetch/fetch-gzip.test.ts b/test/js/web/fetch/fetch-gzip.test.ts index 0569eaad8..a90c98fb7 100644 --- a/test/js/web/fetch/fetch-gzip.test.ts +++ b/test/js/web/fetch/fetch-gzip.test.ts @@ -1,6 +1,10 @@ -import { concatArrayBuffers, Socket, TCPSocketListener } from "bun"; import { it, expect } from "bun:test"; import { gcTick } from "harness"; +import { isIPv6 } from "net"; +import type { Server, TCPSocketListener, Socket } from "bun"; +function getServerUrl(server: Server | TCPSocketListener) { + return isIPv6(server.hostname) ? `http://[${server.hostname}]:${server.port}` : `http://${server.hostname}:${server.port}`; +} it("fetch() with a buffered gzip response works (one chunk)", async () => { var server = Bun.serve({ @@ -18,7 +22,7 @@ it("fetch() with a buffered gzip response works (one chunk)", async () => { }); gcTick(true); - const res = await fetch(`http://${server.hostname}:${server.port}`, { verbose: true }); + const res = await fetch(getServerUrl(server), { verbose: true }); gcTick(true); const arrayBuffer = await res.arrayBuffer(); const clone = new Buffer(arrayBuffer); @@ -49,7 +53,7 @@ it("fetch() with a redirect that returns a buffered gzip response works (one chu }, }); - const res = await fetch(`http://${server.hostname}:${server.port}/hey`, { verbose: true }); + const res = await fetch(`${getServerUrl(server)}/hey`, { verbose: true }); const arrayBuffer = await res.arrayBuffer(); expect( new Buffer(arrayBuffer).equals(new Buffer(await Bun.file(import.meta.dir + "/fixture.html").arrayBuffer())), @@ -58,9 +62,9 @@ it("fetch() with a redirect that returns a buffered gzip response works (one chu }); it("fetch() with a protocol-relative redirect that returns a buffered gzip response works (one chunk)", async () => { + let url: string; const server = Bun.serve({ port: 0, - async fetch(req, server) { if (req.url.endsWith("/redirect")) return new Response(await Bun.file(import.meta.dir + "/fixture.html.gz").arrayBuffer(), { @@ -70,12 +74,13 @@ it("fetch() with a protocol-relative redirect that returns a buffered gzip respo }, }); - return Response.redirect(`://${server.hostname}:${server.port}/redirect`); + return Response.redirect(`${url}/redirect`); }, }); + url = getServerUrl(server); - const res = await fetch(`http://${server.hostname}:${server.port}/hey`, { verbose: true }); - expect(res.url).toBe(`http://${server.hostname}:${server.port}/redirect`); + const res = await fetch(`${url}/hey`, { verbose: true }); + expect(res.url).toBe(`${url}/redirect`); expect(res.redirected).toBe(true); expect(res.status).toBe(200); const arrayBuffer = await res.arrayBuffer(); @@ -113,7 +118,7 @@ it("fetch() with a gzip response works (one chunk, streamed, with a delay)", asy }, }); - const res = await fetch(`http://${server.hostname}:${server.port}`, {}); + const res = await fetch(getServerUrl(server), {}); const arrayBuffer = await res.arrayBuffer(); expect( new Buffer(arrayBuffer).equals(new Buffer(await Bun.file(import.meta.dir + "/fixture.html").arrayBuffer())), @@ -169,7 +174,7 @@ it("fetch() with a gzip response works (multiple chunks, TCP server)", async don }); await 1; - const res = await fetch(`http://${server.hostname}:${server.port}`, {}); + const res = await fetch(getServerUrl(server), {}); const arrayBuffer = await res.arrayBuffer(); expect( new Buffer(arrayBuffer).equals(new Buffer(await Bun.file(import.meta.dir + "/fixture.html").arrayBuffer())), |