diff options
Diffstat (limited to 'test/bun.js/proxy.test.js')
-rw-r--r-- | test/bun.js/proxy.test.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/test/bun.js/proxy.test.js b/test/bun.js/proxy.test.js new file mode 100644 index 000000000..32b21f7e8 --- /dev/null +++ b/test/bun.js/proxy.test.js @@ -0,0 +1,60 @@ +import { afterAll, beforeAll, describe, expect, it } from "bun:test"; +import { gc } from "./gc"; + +let proxy, server; + +// TODO: Proxy with TLS requests + +beforeAll(()=> { + proxy = Bun.serve({ + async fetch(request) { + // if is not an proxy connection just drop it + if (!request.headers.has("proxy-connection")) { + return new Response("Bad Request", { status: 400 }); + } + + // simple http proxy + if (request.url.startsWith("http://")) { + return await fetch(request.url, { method: request.method, body: await request.text() }); + } + + // no TLS support here + return new Response("Bad Request", { status: 400 }); + + }, + port: 54321, + }); + server = Bun.serve({ + async fetch(request) { + if (request.method === "POST"){ + const text = await request.text(); + return new Response(text,{ status: 200 }); + } + return new Response("Hello, World",{ status: 200 }); + }, + port: 54322, + }); +}); + +afterAll(() => { + server.stop(); + proxy.stop(); +}); + +describe("proxy", () => { + const requests = [ + [ new Request("http://localhost:54322"), "fetch() GET with non-TLS Proxy", "http://localhost:54321"], + [ new Request("http://localhost:54322", { method: "POST", body: "Hello, World" }), "fetch() POST with non-TLS Proxy", "http://localhost:54321"] + ]; + for (let [ request, name, proxy ] of requests) { + gc(); + it(name, async () => { + gc(); + const response = await fetch(request, { verbose: true, proxy }); + gc(); + const text = await response.text(); + gc(); + expect(text).toBe("Hello, World"); + }); + } +});
\ No newline at end of file |