Files
bun.sh/test/js/web/fetch/content-length.test.js
Kai Tamkun 4a0e982bb2 node:http improvements (#17093)
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: Pham Minh Triet <92496972+Nanome203@users.noreply.github.com>
Co-authored-by: snwy <snwy@snwy.me>
Co-authored-by: Ciro Spaciari <ciro.spaciari@gmail.com>
Co-authored-by: cirospaciari <cirospaciari@users.noreply.github.com>
Co-authored-by: Ben Grant <ben@bun.sh>
2025-03-10 20:19:29 -07:00

27 lines
976 B
JavaScript

const { createServer } = require("node:http");
// https://github.com/nodejs/undici/issues/1783
test("Content-Length is set when using a FormData body with fetch", async () => {
const { resolve, promise } = Promise.withResolvers();
const server = createServer((req, res) => {
// TODO: check the length's value once the boundary has a fixed length
expect("content-length" in req.headers).toBe(true); // request has content-length header
expect(Number.isNaN(Number(req.headers["content-length"]))).toBe(false); // content-length is a number
res.end();
}).listen(0, "127.0.0.1", resolve);
await promise;
const { port, address } = server.address();
const fd = new FormData();
fd.set("file", new Blob(["hello world 👋"], { type: "text/plain" }), "readme.md");
fd.set("string", "some string value");
await fetch(`http://${address}:${port}`, {
method: "POST",
body: fd,
});
await new Promise(resolve => server.close(resolve));
});