diff options
author | 2022-11-19 22:23:45 -0800 | |
---|---|---|
committer | 2022-11-19 22:23:45 -0800 | |
commit | e024116b776efc19b92d4be613c1449213690ca1 (patch) | |
tree | 8bdb40f057b24f2bc4d7cf83ad24793b6a543780 /test/bun.js/fetch-gzip.test.ts | |
parent | 79b6d4734a70c2024af5224b34a09d1ead7d6a4b (diff) | |
download | bun-e024116b776efc19b92d4be613c1449213690ca1.tar.gz bun-e024116b776efc19b92d4be613c1449213690ca1.tar.zst bun-e024116b776efc19b92d4be613c1449213690ca1.zip |
Add a couple more tests for redirects
Diffstat (limited to 'test/bun.js/fetch-gzip.test.ts')
-rw-r--r-- | test/bun.js/fetch-gzip.test.ts | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/test/bun.js/fetch-gzip.test.ts b/test/bun.js/fetch-gzip.test.ts index d2637121c..2cc795655 100644 --- a/test/bun.js/fetch-gzip.test.ts +++ b/test/bun.js/fetch-gzip.test.ts @@ -36,6 +36,82 @@ it("fetch() with a buffered gzip response works (one chunk)", async () => { server.stop(); }); +it("fetch() with a redirect that returns a buffered gzip response works (one chunk)", async () => { + var server = Bun.serve({ + port: 6020, + + async fetch(req) { + if (req.url.endsWith("/redirect")) + return new Response( + await Bun.file(import.meta.dir + "/fixture.html.gz").arrayBuffer(), + { + headers: { + "Content-Encoding": "gzip", + "Content-Type": "text/html; charset=utf-8", + }, + }, + ); + + return Response.redirect("/redirect"); + }, + }); + + const res = await fetch( + `http://${server.hostname}:${server.port}/hey`, + {}, + { verbose: true }, + ); + const arrayBuffer = await res.arrayBuffer(); + expect( + new Buffer(arrayBuffer).equals( + new Buffer( + await Bun.file(import.meta.dir + "/fixture.html").arrayBuffer(), + ), + ), + ).toBe(true); + server.stop(); +}); + +it("fetch() with a protocol-relative redirect that returns a buffered gzip response works (one chunk)", async () => { + const server = Bun.serve({ + port: 5018, + + async fetch(req, server) { + if (req.url.endsWith("/redirect")) + return new Response( + await Bun.file(import.meta.dir + "/fixture.html.gz").arrayBuffer(), + { + headers: { + "Content-Encoding": "gzip", + "Content-Type": "text/html; charset=utf-8", + }, + }, + ); + + return Response.redirect(`://${server.hostname}:${server.port}/redirect`); + }, + }); + + const res = await fetch( + `http://${server.hostname}:${server.port}/hey`, + {}, + { verbose: true }, + ); + expect(res.url).toBe(`http://${server.hostname}:${server.port}/redirect`); + expect(res.redirected).toBe(true); + expect(res.status).toBe(200); + const arrayBuffer = await res.arrayBuffer(); + expect( + new Buffer(arrayBuffer).equals( + new Buffer( + await Bun.file(import.meta.dir + "/fixture.html").arrayBuffer(), + ), + ), + ).toBe(true); + + server.stop(); +}); + it("fetch() with a gzip response works (one chunk)", async () => { var server = Bun.serve({ port: 6023, |