summaryrefslogtreecommitdiff
path: root/cli/tests/unit/fetch_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/unit/fetch_test.ts')
-rw-r--r--cli/tests/unit/fetch_test.ts84
1 files changed, 84 insertions, 0 deletions
diff --git a/cli/tests/unit/fetch_test.ts b/cli/tests/unit/fetch_test.ts
index 5544eee24..98ff42737 100644
--- a/cli/tests/unit/fetch_test.ts
+++ b/cli/tests/unit/fetch_test.ts
@@ -268,6 +268,60 @@ unitTest(
);
unitTest(
+ { perms: { net: true } },
+ async function fetchInitFormDataMultipleFilesBody(): Promise<void> {
+ const files = [
+ {
+ // prettier-ignore
+ content: new Uint8Array([137,80,78,71,13,10,26,10, 137, 1, 25]),
+ type: "image/png",
+ name: "image",
+ fileName: "some-image.png",
+ },
+ {
+ // prettier-ignore
+ content: new Uint8Array([108,2,0,0,145,22,162,61,157,227,166,77,138,75,180,56,119,188,177,183]),
+ name: "file",
+ fileName: "file.bin",
+ expectedType: "application/octet-stream",
+ },
+ {
+ content: new TextEncoder().encode("deno land"),
+ type: "text/plain",
+ name: "text",
+ fileName: "deno.txt",
+ },
+ ];
+ const form = new FormData();
+ form.append("field", "value");
+ for (const file of files) {
+ form.append(
+ file.name,
+ new Blob([file.content], { type: file.type }),
+ file.fileName
+ );
+ }
+ 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"));
+ for (const file of files) {
+ const inputFile = form.get(file.name) as File;
+ const resultFile = resultForm.get(file.name) as File;
+ assertEquals(inputFile.size, resultFile.size);
+ assertEquals(inputFile.name, resultFile.name);
+ assertEquals(file.expectedType || file.type, resultFile.type);
+ assertEquals(
+ new Uint8Array(await resultFile.arrayBuffer()),
+ file.content
+ );
+ }
+ }
+);
+
+unitTest(
{
perms: { net: true },
},
@@ -427,6 +481,36 @@ unitTest(
}
);
+unitTest(
+ { perms: { net: true } },
+ async function fetchInitFormDataTextFileBody(): Promise<void> {
+ const fileContent = "deno land";
+ const form = new FormData();
+ form.append("field", "value");
+ form.append(
+ "file",
+ new Blob([new TextEncoder().encode(fileContent)], {
+ type: "text/plain",
+ }),
+ "deno.txt"
+ );
+ 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 = form.get("file") as File;
+ const resultFile = resultForm.get("file") as File;
+
+ assertEquals(file.size, resultFile.size);
+ assertEquals(file.name, resultFile.name);
+ assertEquals(file.type, resultFile.type);
+ assertEquals(await file.text(), await resultFile.text());
+ }
+);
+
unitTest({ perms: { net: true } }, async function fetchUserAgent(): Promise<
void
> {