aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-12-02 07:40:22 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-12-02 07:42:44 -0800
commitd84f79bcc16d4e748c8a9400ea1cdb03d7f963fb (patch)
tree876d0a65d75c0f6aec97038e0d9f89c09f915c3f /test/bun.js
parent917cbc8d5d0ea9446db66910be46b7fff4697304 (diff)
downloadbun-d84f79bcc16d4e748c8a9400ea1cdb03d7f963fb.tar.gz
bun-d84f79bcc16d4e748c8a9400ea1cdb03d7f963fb.tar.zst
bun-d84f79bcc16d4e748c8a9400ea1cdb03d7f963fb.zip
[fetch] Implement `Headers#getAll` and `Headers#getSetCookie()`
This matches Deno's behavior (get() combines, iterator preserves the order, set and append combine), but implements both the Cloudflare Workers `getAll()` and the potential standard `getSetCookie` function. The rationale for choosing both is to better support libraries which check for `getAll` and also because `getSetCookie` seems a little confusing (names are hard) This also makes `.toJSON` and JSON.stringify return an array for `Set-Cookie`
Diffstat (limited to 'test/bun.js')
-rw-r--r--test/bun.js/serve.test.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/bun.js/serve.test.ts b/test/bun.js/serve.test.ts
index 91b57a738..6e5a0030a 100644
--- a/test/bun.js/serve.test.ts
+++ b/test/bun.js/serve.test.ts
@@ -599,6 +599,31 @@ it("should support reloading", async () => {
server.stop();
});
+it("should support multiple Set-Cookie headers", async () => {
+ const server = serve({
+ port: port++,
+ fetch(req) {
+ return new Response("hello", {
+ headers: [
+ ["Another-Header", "1"],
+ ["Set-Cookie", "foo=bar"],
+ ["Set-Cookie", "baz=qux"],
+ ],
+ });
+ },
+ });
+
+ const response = await fetch(`http://${server.hostname}:${server.port}`);
+ server.stop();
+
+ expect(response.headers.getAll("Set-Cookie")).toEqual(["foo=bar", "baz=qux"]);
+ expect(response.headers.getSetCookie()).toEqual(["foo=bar", "baz=qux"]);
+
+ const cloned = response.clone().headers;
+ expect(cloned.getAll("Set-Cookie")).toEqual(["foo=bar", "baz=qux"]);
+ expect(cloned.getSetCookie()).toEqual(["foo=bar", "baz=qux"]);
+});
+
describe("status code text", () => {
const fixture = {
200: "OK",