summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/tests/unit/fetch_test.ts2
-rw-r--r--cli/tests/unit/response_test.ts11
-rw-r--r--extensions/fetch/22_body.js34
3 files changed, 22 insertions, 25 deletions
diff --git a/cli/tests/unit/fetch_test.ts b/cli/tests/unit/fetch_test.ts
index 24a820dba..45ab2d12c 100644
--- a/cli/tests/unit/fetch_test.ts
+++ b/cli/tests/unit/fetch_test.ts
@@ -275,7 +275,7 @@ unitTest(
await response.formData();
},
TypeError,
- "Invalid form data",
+ "Body can not be decoded as form data",
);
},
);
diff --git a/cli/tests/unit/response_test.ts b/cli/tests/unit/response_test.ts
index 1faf8991a..c1ef80fb6 100644
--- a/cli/tests/unit/response_test.ts
+++ b/cli/tests/unit/response_test.ts
@@ -43,18 +43,17 @@ unitTest(async function responseBlob() {
assertEquals(await blob.arrayBuffer(), new Uint8Array([1, 2, 3]).buffer);
});
-// TODO(lucacasonato): re-enable test once #10002 is fixed.
-unitTest({ ignore: true }, async function responseFormData() {
+unitTest(async function responseFormData() {
const input = new FormData();
input.append("hello", "world");
- const response = new Response(input, {
- headers: { "content-type": "application/x-www-form-urlencoded" },
- });
+ const response = new Response(input);
+ const contentType = response.headers.get("content-type")!;
+ assert(contentType.startsWith("multipart/form-data"));
const formDataPromise = response.formData();
assert(formDataPromise instanceof Promise);
const formData = await formDataPromise;
assert(formData instanceof FormData);
- assertEquals(formData, input);
+ assertEquals([...formData], [...input]);
});
unitTest(function customInspectFunction(): void {
diff --git a/extensions/fetch/22_body.js b/extensions/fetch/22_body.js
index 2a1a91159..97ed57c8b 100644
--- a/extensions/fetch/22_body.js
+++ b/extensions/fetch/22_body.js
@@ -286,27 +286,25 @@
});
case "FormData": {
if (mimeType !== null) {
- if (mimeType !== null) {
- const essence = mimesniff.essence(mimeType);
- if (essence === "multipart/form-data") {
- const boundary = mimeType.parameters.get("boundary");
- if (boundary === null) {
- throw new TypeError(
- "Missing boundary parameter in mime type of multipart formdata.",
- );
- }
- return parseFormData(bytes, boundary);
- } else if (essence === "application/x-www-form-urlencoded") {
- const entries = parseUrlEncoded(bytes);
- return formDataFromEntries(
- ArrayPrototypeMap(
- entries,
- (x) => ({ name: x[0], value: x[1] }),
- ),
+ const essence = mimesniff.essence(mimeType);
+ if (essence === "multipart/form-data") {
+ const boundary = mimeType.parameters.get("boundary");
+ if (boundary === null) {
+ throw new TypeError(
+ "Missing boundary parameter in mime type of multipart formdata.",
);
}
+ return parseFormData(bytes, boundary);
+ } else if (essence === "application/x-www-form-urlencoded") {
+ const entries = parseUrlEncoded(bytes);
+ return formDataFromEntries(
+ ArrayPrototypeMap(
+ entries,
+ (x) => ({ name: x[0], value: x[1] }),
+ ),
+ );
}
- throw new TypeError("Invalid form data");
+ throw new TypeError("Body can not be decoded as form data");
}
throw new TypeError("Missing content type");
}