[Fetch API] Add basic loading of resources
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / fetch / api / basic / scheme-blob.js
1 if (this.document === undefined) {
2   importScripts("/resources/testharness.js");
3   importScripts("../resources/utils.js");
4 }
5
6 function checkFetchResponse(url, data, mime, size, desc) {
7   promise_test(function(test) {
8     size = size.toString();
9     return fetch(url).then(function(resp) {
10       assert_equals(resp.status, 200, "HTTP status is 200");
11       assert_equals(resp.type, "basic", "response type is basic");
12       assert_equals(resp.headers.get("Content-Type"), mime, "Content-Type is " + resp.headers.get("Content-Type"));
13       assert_equals(resp.headers.get("Content-Length"), size, "Content-Length is " + resp.headers.get("Content-Length"));
14       return resp.text();
15     }).then(function(bodyAsText) {
16       assert_equals(bodyAsText, data, "Response's body is " + data);
17     })
18   }, desc);
19 }
20
21 var blob = new Blob(["Blob's data"], { "type" : "text/plain" });
22 checkFetchResponse(URL.createObjectURL(blob), "Blob's data", "text/plain",  blob.size, "Regular Blob loading");
23
24 function checkKoUrl(url, method, desc) {
25   promise_test(function(test) {
26     var promise = fetch(url, {"method": method});
27     return promise_rejects(test, new TypeError(), promise);
28   }, desc);
29 }
30
31 var blob2 = new Blob(["Blob's data"], { "type" : "text/plain" });
32 checkKoUrl("blob:http://{{domains[www]}}:{{ports[http][0]}}/", "GET", "Loading an erroneous blob scheme URL");
33 checkKoUrl(URL.createObjectURL(blob2), "POST", "Loading a blob URL using POST");
34
35 done();