diff options
Diffstat (limited to 'cli/tests/unit/fetch_test.ts')
-rw-r--r-- | cli/tests/unit/fetch_test.ts | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/cli/tests/unit/fetch_test.ts b/cli/tests/unit/fetch_test.ts index c2224083d..cf7510ea2 100644 --- a/cli/tests/unit/fetch_test.ts +++ b/cli/tests/unit/fetch_test.ts @@ -1149,3 +1149,49 @@ unitTest({}, function fetchWritableRespProps(): void { assertEquals(original.status, new_.status); assertEquals(new_.headers.get("x-deno"), "foo"); }); + +function returnHostHeaderServer(addr: string): Deno.Listener { + const [hostname, port] = addr.split(":"); + const listener = Deno.listen({ + hostname, + port: Number(port), + }) as Deno.Listener; + + listener.accept().then(async (conn: Deno.Conn) => { + const httpConn = Deno.serveHttp(conn); + + await httpConn.nextRequest() + .then(async (requestEvent: Deno.RequestEvent | null) => { + const hostHeader = requestEvent?.request.headers.get("Host"); + const headersToReturn = hostHeader ? { "Host": hostHeader } : undefined; + + await requestEvent?.respondWith( + new Response("", { + status: 200, + headers: headersToReturn, + }), + ); + }); + + httpConn.close(); + }); + + return listener; +} + +unitTest( + { perms: { net: true } }, + async function fetchFilterOutCustomHostHeader(): Promise< + void + > { + const addr = "127.0.0.1:4502"; + const listener = returnHostHeaderServer(addr); + const response = await fetch(`http://${addr}/`, { + headers: { "Host": "example.com" }, + }); + await response.text(); + listener.close(); + + assertEquals(response.headers.get("Host"), addr); + }, +); |