Skip to content

Commit

Permalink
Fetch: add test for cloning Request/Response body input
Browse files Browse the repository at this point in the history
  • Loading branch information
jimmywarting committed Dec 19, 2022
1 parent 694b540 commit f293f22
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions fetch/api/body/cloned-any.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// Changing the body after it have been passed to Response/Request
// should not change the outcome of the consumed body

const url = 'http://a';
const method = 'post';

promise_test(async t => {
const body = new FormData();
body.set('a', '1');
const res = new Response(body);
const req = new Request(url, { method, body });
body.set('a', '2');
assert_true((await res.formData()).get('a') === '1');
assert_true((await req.formData()).get('a') === '1');
}, 'FormData is cloned');

promise_test(async t => {
const body = new URLSearchParams({a: '1'});
const res = new Response(body);
const req = new Request(url, { method, body });
body.set('a', '2');
assert_true((await res.formData()).get('a') === '1');
assert_true((await req.formData()).get('a') === '1');
}, 'URLSearchParams is cloned');

promise_test(async t => {
const body = new Uint8Array([97]); // a
const res = new Response(body);
const req = new Request(url, { method, body });
body[0] = 98; // b
assert_true(await res.text() === 'a');
assert_true(await req.text() === 'a');
}, 'TypedArray is cloned');

promise_test(async t => {
const body = new Uint8Array([97]); // a
const res = new Response(body.buffer);
const req = new Request(url, { method, body: body.buffer });
body[0] = 98; // b
assert_true(await res.text() === 'a');
assert_true(await req.text() === 'a');
}, 'ArrayBuffer is cloned');

promise_test(async t => {
const body = new Blob(['a']);
const res = new Response(body);
const req = new Request(url, { method, body });
assert_true(await res.blob() !== body);
assert_true(await req.blob() !== body);
}, 'Blob is cloned');

1 comment on commit f293f22

@community-tc-integration
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Uh oh! Looks like an error! Details

HttpError: You have exceeded a secondary rate limit. Please wait a few minutes before you try again.

Please sign in to comment.