mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
70 lines
1.7 KiB
JavaScript
70 lines
1.7 KiB
JavaScript
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: 54312,
|
|
});
|
|
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:54312"],
|
|
[
|
|
new Request("http://localhost:54322", {
|
|
method: "POST",
|
|
body: "Hello, World",
|
|
}),
|
|
"fetch() POST with non-TLS Proxy",
|
|
"http://localhost:54312",
|
|
],
|
|
];
|
|
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");
|
|
});
|
|
}
|
|
});
|