function testURL() { var promises = [];
passFiles.forEach(function (entry) { var p = fetch(path + entry[0]).then(function (res) {
ok(
res.type !== "error", "Response should not be an error for " + entry[0]
);
is(res.status, entry[2], "Status should match expected for " + entry[0]);
is(
res.statusText,
is_http2 ? "" : entry[3], "Status text should match expected for " +
entry[0] + " " +
is_http2 + " " +
location.href
); if (entry[0] != "file_XHR_pass3.txt") {
ok(
res.url.endsWith(path + entry[0]), "Response url should match request for simple fetch for " + entry[0]
);
} else {
ok(
res.url.endsWith(path + "file_XHR_pass2.txt"), "Response url should match request for simple fetch for " + entry[0]
);
}
is(
res.headers.get("content-type"),
entry[4], "Response should have content-type for " + entry[0]
);
});
promises.push(p);
});
return Promise.all(promises);
}
var failFiles = [["ftp://localhost" + path + "file_XHR_pass1.xml", "GET"]];
function testURLFail() { var promises = [];
failFiles.forEach(function (entry) { var p = fetch(entry[0]).then( function (res) {
ok(false, "Response should be an error for " + entry[0]);
}, function (e) {
ok(
e instanceof TypeError, "Response should be an error for " + entry[0]
);
}
);
promises.push(p);
});
return Promise.all(promises);
}
function testRequestGET() { var promises = [];
passFiles.forEach(function (entry) { var req = new Request(path + entry[0], { method: entry[1] }); var p = fetch(req).then(function (res) {
ok(
res.type !== "error", "Response should not be an error for " + entry[0]
);
is(res.status, entry[2], "Status should match expected for " + entry[0]);
is(
res.statusText,
is_http2 ? "" : entry[3], "Status text should match expected for " +
entry[0] + " " +
is_http2 + " " +
location.href
); if (entry[0] != "file_XHR_pass3.txt") {
ok(
res.url.endsWith(path + entry[0]), "Response url should match request for simple fetch for " + entry[0]
);
} else {
ok(
res.url.endsWith(path + "file_XHR_pass2.txt"), "Response url should match request for simple fetch for " + entry[0]
);
}
is(
res.headers.get("content-type"),
entry[4], "Response should have content-type for " + entry[0]
);
});
promises.push(p);
});
return Promise.all(promises);
}
function arraybuffer_equals_to(ab, s) {
is(ab.byteLength, s.length, "arraybuffer byteLength should match");
var u8v = new Uint8Array(ab);
is(
String.fromCharCode.apply(String, u8v),
s, "arraybuffer bytes should match"
);
}
function testResponses() { var fetches = [
fetch(path + "file_XHR_pass2.txt").then(res => {
is(res.status, 200, "status should match"); return res
.text()
.then(v => is(v, "hello pass\n", "response should match"));
}),
new Promise((resolve, reject) => { var jsonBody = JSON.stringify({ title: "aBook", author: "john" }); var req = new Request(path + "responseIdentical.sjs", {
method: "POST",
body: jsonBody,
}); var p = fetch(req).then(res => {
is(res.status, 200, "status should match"); return res.json().then(v => {
is(JSON.stringify(v), jsonBody, "json response should match");
});
});
resolve(p);
}),
new Promise((resolve, reject) => { var req = new Request(path + "responseIdentical.sjs", {
method: "POST",
body: "{",
}); var p = fetch(req).then(res => {
is(res.status, 200, "wrong status"); return res.json().then(
v => ok(false, "expected json parse failure"),
e => ok(true, "expected json parse failure")
);
});
resolve(p);
}),
];
return Promise.all(fetches);
}
function testBlob() { return fetch(path + "/file_XHR_binary2.bin").then(r => {
is(r.status, 200, "status should match"); return r.blob().then(b => {
is(b.size, 65536, "blob should have size 65536"); return readAsArrayBuffer(b).then(function (ab) { var u8 = new Uint8Array(ab); for (var i = 0; i < 65536; i++) { if (u8[i] !== (i & 255)) { break;
}
}
is(i, 65536, "wrong value at offset " + i);
});
});
});
}
// This test is a copy of dom/html/test/formData_test.js testSend() modified to // use the fetch API. Please change this if you change that. function testFormDataSend() { var file,
blob = new Blob(["hey"], { type: "text/plain" });
var fd = new FormData();
fd.append("string", "hey");
fd.append("empty", blob);
fd.append("explicit", blob, "explicit-file-name");
fd.append("explicit-empty", blob, "");
file = new File([blob], "testname", { type: "text/plain" });
fd.append("file-name", file);
file = new File([blob], "", { type: "text/plain" });
fd.append("empty-file-name", file);
file = new File([blob], "testname", { type: "text/plain" });
fd.append("file-name-overwrite", file, "overwrite");
var req = new Request("/tests/dom/html/test/form_submit_server.sjs", {
method: "POST",
body: fd,
});
return fetch(req).then(r => {
is(r.status, 200, "status should match"); return r.json().then(response => { for (var entry of response) { if (
entry.headers["Content-Disposition"] != 'form-data; name="string"'
) {
is(entry.headers["Content-Type"], "text/plain");
}
function runTest() { return Promise.resolve()
.then(testURL)
.then(testURLFail)
.then(testRequestGET)
.then(testResponses)
.then(testBlob)
.then(testFormDataSend); // Put more promise based tests here.
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.