mirror of
https://github.com/oven-sh/bun
synced 2026-02-10 10:58:56 +00:00
86 lines
2.2 KiB
TypeScript
86 lines
2.2 KiB
TypeScript
import { expect, test } from "bun:test";
|
|
import { bunEnv } from "harness";
|
|
import http from "node:http";
|
|
import path from "path";
|
|
|
|
test("maxHeaderSize", async () => {
|
|
const originalMaxHeaderSize = http.maxHeaderSize;
|
|
expect(http.maxHeaderSize).toBe(16 * 1024);
|
|
// @ts-expect-error its a liar
|
|
http.maxHeaderSize = 1024;
|
|
expect(http.maxHeaderSize).toBe(1024);
|
|
{
|
|
using server = Bun.serve({
|
|
port: 0,
|
|
|
|
fetch(req) {
|
|
return new Response(JSON.stringify(req.headers, null, 2));
|
|
},
|
|
});
|
|
|
|
{
|
|
const response = await fetch(`${server.url}/`, {
|
|
headers: {
|
|
"Huge": Buffer.alloc(8 * 1024, "abc").toString(),
|
|
},
|
|
});
|
|
expect(response.status).toBe(431);
|
|
}
|
|
|
|
{
|
|
const response = await fetch(`${server.url}/`, {
|
|
headers: {
|
|
"Huge": Buffer.alloc(15 * 1024, "abc").toString(),
|
|
},
|
|
});
|
|
expect(response.status).toBe(431);
|
|
}
|
|
}
|
|
http.maxHeaderSize = 16 * 1024;
|
|
{
|
|
using server = Bun.serve({
|
|
port: 0,
|
|
|
|
fetch(req) {
|
|
return new Response(JSON.stringify(req.headers, null, 2));
|
|
},
|
|
});
|
|
|
|
{
|
|
const response = await fetch(`${server.url}/`, {
|
|
headers: {
|
|
"Huge": Buffer.alloc(15 * 1024, "abc").toString(),
|
|
},
|
|
});
|
|
expect(response.status).toBe(200);
|
|
}
|
|
|
|
{
|
|
const response = await fetch(`${server.url}/`, {
|
|
headers: {
|
|
"Huge": Buffer.alloc(17 * 1024, "abc").toString(),
|
|
},
|
|
});
|
|
expect(response.status).toBe(431);
|
|
}
|
|
}
|
|
|
|
http.maxHeaderSize = originalMaxHeaderSize;
|
|
});
|
|
|
|
test("--max-http-header-size=1024", async () => {
|
|
const size = 1024;
|
|
bunEnv.BUN_HTTP_MAX_HEADER_SIZE = size;
|
|
expect(["--max-http-header-size=" + size, path.join(import.meta.dir, "max-header-size-fixture.ts")]).toRun();
|
|
});
|
|
|
|
test("--max-http-header-size=NaN", async () => {
|
|
expect(["--max-http-header-size=" + "NaN", path.join(import.meta.dir, "max-header-size-fixture.ts")]).not.toRun();
|
|
});
|
|
|
|
test("--max-http-header-size=16*1024", async () => {
|
|
const size = 16 * 1024;
|
|
bunEnv.BUN_HTTP_MAX_HEADER_SIZE = size;
|
|
expect(["--max-http-header-size=" + size, path.join(import.meta.dir, "max-header-size-fixture.ts")]).toRun();
|
|
});
|