Index: third_party/WebKit/LayoutTests/external/wpt/fetch/api/basic/request-upload.js |
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/basic/request-upload.js b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/basic/request-upload.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6a0f0fa8ca2626f75fd22f9ababeed6993238f8b |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/basic/request-upload.js |
@@ -0,0 +1,127 @@ |
+if (this.document === undefined) { |
+ importScripts("/resources/testharness.js"); |
+ importScripts("../resources/utils.js"); |
+} |
+ |
+function testUpload(desc, url, method, createBody, expectedBody) { |
+ var requestInit = {"method": method} |
+ promise_test(function(test){ |
+ let body = createBody(); |
+ if (body) |
+ requestInit["body"] = body; |
+ return fetch(url, requestInit).then(function(resp) { |
+ return resp.text().then((text)=> { |
+ assert_equals(text, expectedBody); |
+ }); |
+ }); |
+ }, desc); |
+} |
+ |
+function testUploadFailure(desc, url, method, createBody) { |
+ const requestInit = {"method": method}; |
+ promise_test(test => { |
+ let body = createBody(); |
+ 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"); |
+testUpload("Fetch with POST with text body", url, |
+ "POST", |
+ () => "Request's body", |
+ "Request's body"); |
+testUpload("Fetch with POST with URLSearchParams body", url, |
+ "POST", |
+ () => new URLSearchParams("name=value"), |
+ "name=value"); |
+testUpload("Fetch with POST with Blob body", url, |
+ "POST", |
+ () => new Blob(["Test"]), |
+ "Test"); |
+testUpload("Fetch with POST with ArrayBuffer body", url, |
+ "POST", |
+ () => new ArrayBuffer(4), |
+ "\0\0\0\0"); |
+testUpload("Fetch with POST with Uint8Array body", url, |
+ "POST", |
+ () => new Uint8Array(4), |
+ "\0\0\0\0"); |
+testUpload("Fetch with POST with Int8Array body", url, |
+ "POST", |
+ () => new Int8Array(4), |
+ "\0\0\0\0"); |
+testUpload("Fetch with POST with Float32Array body", url, |
+ "POST", |
+ () => new Float32Array(1), |
+ "\0\0\0\0"); |
+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(); |