summaryrefslogtreecommitdiff
path: root/cli/tests/unit/fetch_test.ts
diff options
context:
space:
mode:
authorLuca Casonato <hello@lcas.dev>2021-11-09 12:10:40 +0100
committerGitHub <noreply@github.com>2021-11-09 12:10:40 +0100
commit0de6d1edc4c902044744cdf832113f9aeb167fc5 (patch)
treeac2868ec27baac149e067c2a7a3d044657f63e9f /cli/tests/unit/fetch_test.ts
parent75793baae83123f890442c5d32e3dd38eb18ce1c (diff)
fix(fetch): set content-length for empty POST/PUT (#12703)
This commit changes `fetch` to set `content-length: 0` on POST and PUT requests with no body.
Diffstat (limited to 'cli/tests/unit/fetch_test.ts')
-rw-r--r--cli/tests/unit/fetch_test.ts58
1 files changed, 58 insertions, 0 deletions
diff --git a/cli/tests/unit/fetch_test.ts b/cli/tests/unit/fetch_test.ts
index 98134728e..8fe8db17e 100644
--- a/cli/tests/unit/fetch_test.ts
+++ b/cli/tests/unit/fetch_test.ts
@@ -640,6 +640,7 @@ unitTest(
const actual = new TextDecoder().decode((await bufPromise).bytes());
const expected = [
"POST /blah HTTP/1.1\r\n",
+ "content-length: 0\r\n",
"hello: World\r\n",
"foo: Bar\r\n",
"accept: */*\r\n",
@@ -1416,3 +1417,60 @@ unitTest(
assertEquals(await res.text(), fixture);
},
);
+
+unitTest(
+ { permissions: { net: true } },
+ async function fetchContentLengthPost() {
+ const response = await fetch("http://localhost:4545/content_length", {
+ method: "POST",
+ });
+ const length = await response.text();
+ assertEquals(length, 'Some("0")');
+ },
+);
+
+unitTest(
+ { permissions: { net: true } },
+ async function fetchContentLengthPut() {
+ const response = await fetch("http://localhost:4545/content_length", {
+ method: "PUT",
+ });
+ const length = await response.text();
+ assertEquals(length, 'Some("0")');
+ },
+);
+
+unitTest(
+ { permissions: { net: true } },
+ async function fetchContentLengthPatch() {
+ const response = await fetch("http://localhost:4545/content_length", {
+ method: "PATCH",
+ });
+ const length = await response.text();
+ assertEquals(length, "None");
+ },
+);
+
+unitTest(
+ { permissions: { net: true } },
+ async function fetchContentLengthPostWithStringBody() {
+ const response = await fetch("http://localhost:4545/content_length", {
+ method: "POST",
+ body: "Hey!",
+ });
+ const length = await response.text();
+ assertEquals(length, 'Some("4")');
+ },
+);
+
+unitTest(
+ { permissions: { net: true } },
+ async function fetchContentLengthPostWithBufferBody() {
+ const response = await fetch("http://localhost:4545/content_length", {
+ method: "POST",
+ body: new TextEncoder().encode("Hey!"),
+ });
+ const length = await response.text();
+ assertEquals(length, 'Some("4")');
+ },
+);