Files
bun.sh/test/js/web/fetch/encoding.test.ts
2024-09-03 21:32:52 -07:00

54 lines
1.5 KiB
TypeScript

import { expect, test } from "bun:test";
import { once } from "node:events";
import { createServer } from "node:http";
import { createBrotliCompress, createDeflate, createGzip } from "node:zlib";
test.todo("content-encoding header is case-iNsENsITIve", async () => {
const contentCodings = "GZiP, bR";
const text = "Hello, World!";
await using server = createServer((req, res) => {
const gzip = createGzip();
const brotli = createBrotliCompress();
res.setHeader("Content-Encoding", contentCodings);
res.setHeader("Content-Type", "text/plain");
gzip.pipe(brotli).pipe(res);
gzip.write(text);
gzip.end();
}).listen(0);
await once(server, "listening");
const response = await fetch(`http://localhost:${server.address().port}`);
expect(await response.text()).toBe(text);
expect(response.headers.get("content-encoding")).toBe(contentCodings);
});
test.todo("response decompression according to content-encoding should be handled in a correct order", async () => {
const contentCodings = "deflate, gzip";
const text = "Hello, World!";
await using server = createServer((req, res) => {
const gzip = createGzip();
const deflate = createDeflate();
res.setHeader("Content-Encoding", contentCodings);
res.setHeader("Content-Type", "text/plain");
deflate.pipe(gzip).pipe(res);
deflate.write(text);
deflate.end();
}).listen(0);
await once(server, "listening");
const response = await fetch(`http://localhost:${server.address().port}`);
expect(await response.text()).toBe(text);
});