summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcos Casagrande <marcoscvp90@gmail.com>2020-05-28 15:02:00 +0200
committerGitHub <noreply@github.com>2020-05-28 09:02:00 -0400
commitc9bbb200d6938e63081da97f77fb95f5322ec918 (patch)
tree4ea04718508c7a37aea328a8d1d589564ac4a524
parent3cbcdd4250cda17cbafa8efdfc296b79d0f6d5c0 (diff)
formData: set default filename for Blob to <blob> (#5907)
-rw-r--r--cli/js/web/form_data.ts6
-rw-r--r--cli/tests/unit/fetch_test.ts18
-rw-r--r--cli/tests/unit/form_data_test.ts9
3 files changed, 30 insertions, 3 deletions
diff --git a/cli/js/web/form_data.ts b/cli/js/web/form_data.ts
index 5fab02553..055694517 100644
--- a/cli/js/web/form_data.ts
+++ b/cli/js/web/form_data.ts
@@ -22,7 +22,7 @@ class FormDataBase {
if (value instanceof domFile.DomFileImpl) {
this[dataSymbol].push([name, value]);
} else if (value instanceof blob.DenoBlob) {
- const dfile = new domFile.DomFileImpl([value], filename || name, {
+ const dfile = new domFile.DomFileImpl([value], filename || "blob", {
type: value.type,
});
this[dataSymbol].push([name, dfile]);
@@ -96,7 +96,7 @@ class FormDataBase {
if (value instanceof domFile.DomFileImpl) {
this[dataSymbol][i][1] = value;
} else if (value instanceof blob.DenoBlob) {
- const dfile = new domFile.DomFileImpl([value], filename || name, {
+ const dfile = new domFile.DomFileImpl([value], filename || "blob", {
type: value.type,
});
this[dataSymbol][i][1] = dfile;
@@ -117,7 +117,7 @@ class FormDataBase {
if (value instanceof domFile.DomFileImpl) {
this[dataSymbol].push([name, value]);
} else if (value instanceof blob.DenoBlob) {
- const dfile = new domFile.DomFileImpl([value], filename || name, {
+ const dfile = new domFile.DomFileImpl([value], filename || "blob", {
type: value.type,
});
this[dataSymbol].push([name, dfile]);
diff --git a/cli/tests/unit/fetch_test.ts b/cli/tests/unit/fetch_test.ts
index 4a4212c0c..2738eba5e 100644
--- a/cli/tests/unit/fetch_test.ts
+++ b/cli/tests/unit/fetch_test.ts
@@ -359,6 +359,24 @@ unitTest(
}
);
+unitTest(
+ { perms: { net: true } },
+ async function fetchInitFormDataBlobFilenameBody(): Promise<void> {
+ const form = new FormData();
+ form.append("field", "value");
+ form.append("file", new Blob([new TextEncoder().encode("deno")]));
+ const response = await fetch("http://localhost:4545/echo_server", {
+ method: "POST",
+ body: form,
+ });
+ const resultForm = await response.formData();
+ assertEquals(form.get("field"), resultForm.get("field"));
+ const file = resultForm.get("file");
+ assert(file instanceof File);
+ assertEquals(file.name, "blob");
+ }
+);
+
unitTest({ perms: { net: true } }, async function fetchUserAgent(): Promise<
void
> {
diff --git a/cli/tests/unit/form_data_test.ts b/cli/tests/unit/form_data_test.ts
index 5344d8512..f25818eee 100644
--- a/cli/tests/unit/form_data_test.ts
+++ b/cli/tests/unit/form_data_test.ts
@@ -99,6 +99,15 @@ unitTest(function formDataSetEmptyBlobSuccess(): void {
*/
});
+unitTest(function formDataBlobFilename(): void {
+ const formData = new FormData();
+ const content = new TextEncoder().encode("deno");
+ formData.set("a", new Blob([content]));
+ const file = formData.get("a");
+ assert(file instanceof File);
+ assertEquals(file.name, "blob");
+});
+
unitTest(function formDataParamsForEachSuccess(): void {
const init = [
["a", "54"],