Skip to content

Commit

Permalink
Add a fetch test for upload streaming
Browse files Browse the repository at this point in the history
See whatwg/fetch#88 for context.
  • Loading branch information
yutakahirano authored and annevk committed Jan 7, 2017
1 parent eeecf3e commit 1dd5361
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions fetch/api/basic/request-upload.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,17 @@ function testUpload(desc, url, method, body, expectedBody) {
}, desc);
}

function testUploadFailure(desc, url, method, body) {
const requestInit = {"method": method};
promise_test(test => {
if (typeof body === "function")
body = body();
if (body)
requestInit["body"] = body;
return promise_rejects(new TypeError(), fetch(url, requestInit));
}, desc);
}

var url = RESOURCES_DIR + "echo-content.py"

testUpload("Fetch with PUT with body", url, "PUT", "Request's body", "Request's body");
Expand All @@ -31,5 +42,30 @@ testUpload("Fetch with POST with Float32Array body", url, "POST", new Float32Arr
testUpload("Fetch with POST with Float64Array body", url, "POST", new Float64Array(1), "\0\0\0\0\0\0\0\0");
testUpload("Fetch with POST with DataView body", url, "POST", new DataView(new ArrayBuffer(8), 0, 4), "\0\0\0\0");
testUpload("Fetch with POST with Blob body with mime type", url, "POST", new Blob(["Test"], { type: "text/maybe" }), "Test");
testUpload("Fetch with POST with ReadableStream", url, "POST", new ReadableStream({start: controller => {
const encoder = new TextEncoder();
controller.enqueue(encoder.encode("Test"));
controller.close();
}}), "Test");
testUploadFailure("Fetch with POST with ReadableStream containing String", url, "POST", new ReadableStream({start: controller => {
controller.enqueue("Test");
controller.close();
}}));
testUploadFailure("Fetch with POST with ReadableStream containing null", url, "POST", new ReadableStream({start: controller => {
controller.enqueue(null);
controller.close();
}}));
testUploadFailure("Fetch with POST with ReadableStream containing number", url, "POST", new ReadableStream({start: controller => {
controller.enqueue(99);
controller.close();
}}));
testUploadFailure("Fetch with POST with ReadableStream containing ArrayBuffer", url, "POST", new ReadableStream({start: controller => {
controller.enqueue(new ArrayBuffer());
controller.close();
}}));
testUploadFailure("Fetch with POST with ReadableStream containing Blob", url, "POST", new ReadableStream({start: controller => {
controller.enqueue(new Blob());
controller.close();
}}));

done();

0 comments on commit 1dd5361

Please sign in to comment.