mirror of
https://github.com/servo/servo.git
synced 2025-08-15 10:25:32 +01:00
Update web-platform-tests to revision dc5cbf088edcdb266541d4e5a76149a2c6e716a0
This commit is contained in:
parent
1d40075f03
commit
079092dfea
2381 changed files with 90360 additions and 17722 deletions
|
@ -8,7 +8,7 @@
|
|||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="resources/get-host-info.sub.js"></script>
|
||||
<script src="/common/get-host-info.sub.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
|
|
@ -13,14 +13,17 @@
|
|||
<body>
|
||||
<script>
|
||||
function checkBodyText(request, expectedBody) {
|
||||
return request.text().then( function(bodyAsText) {
|
||||
return request.text().then(function(bodyAsText) {
|
||||
assert_equals(bodyAsText, expectedBody, "Retrieve and verify request's body");
|
||||
assert_true(request.bodyUsed, "body as text: bodyUsed turned true");
|
||||
});
|
||||
}
|
||||
|
||||
function checkBodyBlob(request, expectedBody) {
|
||||
function checkBodyBlob(request, expectedBody, checkContentType) {
|
||||
return request.blob().then(function(bodyAsBlob) {
|
||||
if (checkContentType)
|
||||
assert_equals(bodyAsBlob.type, "text/plain", "Blob body type should be computed from the request Content-Type");
|
||||
|
||||
var promise = new Promise(function (resolve, reject) {
|
||||
var reader = new FileReader();
|
||||
reader.onload = function(evt) {
|
||||
|
@ -60,24 +63,64 @@
|
|||
});
|
||||
}
|
||||
|
||||
function checkRequestBody(body, bodyType, checkFunction) {
|
||||
function checkRequestBody(body, expected, bodyType) {
|
||||
promise_test(function(test) {
|
||||
var request = new Request("", {"method": "POST", "body": body, "headers": [["Content-Type", "text/PLAIN"]] });
|
||||
assert_false(request.bodyUsed, "bodyUsed is false at init");
|
||||
return checkBodyText(request, expected);
|
||||
}, "Consume " + bodyType + " request's body as text");
|
||||
promise_test(function(test) {
|
||||
var request = new Request("", {"method": "POST", "body": body });
|
||||
assert_false(request.bodyUsed, "bodyUsed is false at init");
|
||||
return checkFunction(request, body);
|
||||
}, "Consume request's body as " + bodyType);
|
||||
return checkBodyBlob(request, expected);
|
||||
}, "Consume " + bodyType + " request's body as blob");
|
||||
promise_test(function(test) {
|
||||
var request = new Request("", {"method": "POST", "body": body });
|
||||
assert_false(request.bodyUsed, "bodyUsed is false at init");
|
||||
return checkBodyArrayBuffer(request, expected);
|
||||
}, "Consume " + bodyType + " request's body as arrayBuffer");
|
||||
promise_test(function(test) {
|
||||
var request = new Request("", {"method": "POST", "body": body });
|
||||
assert_false(request.bodyUsed, "bodyUsed is false at init");
|
||||
return checkBodyJSON(request, expected);
|
||||
}, "Consume " + bodyType + " request's body as JSON");
|
||||
}
|
||||
|
||||
var formData = new FormData();
|
||||
formData.append("name", "value")
|
||||
var textData = JSON.stringify("This is response's body");
|
||||
var blob = new Blob([textData], { "type" : "text/plain" });
|
||||
|
||||
checkRequestBody(textData, "text", checkBodyText);
|
||||
checkRequestBody(textData, "blob", checkBodyBlob);
|
||||
checkRequestBody(textData, "arrayBuffer", checkBodyArrayBuffer);
|
||||
checkRequestBody(textData, "json", checkBodyJSON);
|
||||
checkRequestBody(formData, "formData", checkBodyFormData);
|
||||
checkRequestBody(textData, textData, "String");
|
||||
|
||||
var string = "\"123456\"";
|
||||
function getArrayBuffer() {
|
||||
var arrayBuffer = new ArrayBuffer(8);
|
||||
var int8Array = new Int8Array(arrayBuffer);
|
||||
for (var cptr = 0; cptr < 8; cptr++)
|
||||
int8Array[cptr] = string.charCodeAt(cptr);
|
||||
return arrayBuffer;
|
||||
}
|
||||
|
||||
function getArrayBufferWithZeros() {
|
||||
var arrayBuffer = new ArrayBuffer(10);
|
||||
var int8Array = new Int8Array(arrayBuffer);
|
||||
for (var cptr = 0; cptr < 8; cptr++)
|
||||
int8Array[cptr + 1] = string.charCodeAt(cptr);
|
||||
return arrayBuffer;
|
||||
}
|
||||
|
||||
checkRequestBody(getArrayBuffer(), string, "ArrayBuffer");
|
||||
checkRequestBody(new Uint8Array(getArrayBuffer()), string, "Uint8Array");
|
||||
checkRequestBody(new Int8Array(getArrayBufferWithZeros(), 1, 8), string, "Int8Array");
|
||||
checkRequestBody(new Float32Array(getArrayBuffer()), string, "Float32Array");
|
||||
checkRequestBody(new DataView(getArrayBufferWithZeros(), 1, 8), string, "DataView");
|
||||
|
||||
promise_test(function(test) {
|
||||
var formData = new FormData();
|
||||
formData.append("name", "value")
|
||||
var request = new Request("", {"method": "POST", "body": formData });
|
||||
assert_false(request.bodyUsed, "bodyUsed is false at init");
|
||||
return checkBodyFormData(request, formData);
|
||||
}, "Consume FormData request's body as FormData");
|
||||
|
||||
function checkBlobResponseBody(blobBody, blobData, bodyType, checkFunction) {
|
||||
promise_test(function(test) {
|
||||
|
@ -91,6 +134,7 @@
|
|||
checkBlobResponseBody(blob, textData, "text", checkBodyText);
|
||||
checkBlobResponseBody(blob, textData, "json", checkBodyJSON);
|
||||
checkBlobResponseBody(blob, textData, "arrayBuffer", checkBodyArrayBuffer);
|
||||
checkBlobResponseBody(new Blob([""]), "", "blob (empty blob as input)", checkBodyBlob);
|
||||
|
||||
var goodJSONValues = ["null", "1", "true", "\"string\""];
|
||||
goodJSONValues.forEach(function(value) {
|
||||
|
|
|
@ -50,6 +50,28 @@
|
|||
assert_true(bodyConsumed.bodyUsed , "bodyUsed is true when request is disturbed");
|
||||
return promise_rejects(test, new TypeError(), bodyConsumed.blob());
|
||||
}, "Check consuming a disturbed request");
|
||||
|
||||
test(function() {
|
||||
var req = new Request(URL, {method: 'POST', body: 'hello'});
|
||||
assert_false(req.bodyUsed,
|
||||
'Request should not be flagged as used if it has not been ' +
|
||||
'consumed.');
|
||||
assert_throws(new TypeError(),
|
||||
function() { new Request(req, {method: 'GET'}); },
|
||||
'A get request may not have body.');
|
||||
|
||||
assert_false(req.bodyUsed, 'After the GET case');
|
||||
|
||||
assert_throws(new TypeError(),
|
||||
function() { new Request(req, {method: 'CONNECT'}); },
|
||||
'Request() with a forbidden method must throw.');
|
||||
|
||||
assert_false(req.bodyUsed, 'After the forbidden method case');
|
||||
|
||||
var req2 = new Request(req);
|
||||
assert_true(req.bodyUsed,
|
||||
'Request should be flagged as used if it has been consumed.');
|
||||
}, 'Request construction failure should not set "bodyUsed"');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -145,6 +145,29 @@
|
|||
assert_equals(request.headers.get("Content-Type"), "potato");
|
||||
}, "Request should get its content-type from init headers if one is provided");
|
||||
|
||||
test(function() {
|
||||
var array = [["hello", "worldAHH"]];
|
||||
var object = {"hello": 'worldOOH'};
|
||||
var headers = new Headers(array);
|
||||
|
||||
assert_equals(headers.get("hello"), "worldAHH");
|
||||
|
||||
var request1 = new Request("", {"headers": headers});
|
||||
var request2 = new Request("", {"headers": array});
|
||||
var request3 = new Request("", {"headers": object});
|
||||
|
||||
assert_equals(request1.headers.get("hello"), "worldAHH");
|
||||
assert_equals(request2.headers.get("hello"), "worldAHH");
|
||||
assert_equals(request3.headers.get("hello"), "worldOOH");
|
||||
}, "Testing request header creations with various objects");
|
||||
|
||||
promise_test(function(test) {
|
||||
var request = new Request("", {"headers" : [["Content-Type", ""]], "body" : "this is my plate", "method" : "POST"});
|
||||
return request.blob().then(function(blob) {
|
||||
assert_equals(blob.type, "", "Blob type should be the empty string");
|
||||
});
|
||||
}, "Testing empty Request Content-Type header");
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -31,9 +31,8 @@
|
|||
promise_test(function(test) {
|
||||
var request = new Request("", makeRequestInit(body, "POST"));
|
||||
if (body) {
|
||||
assert_throws(new TypeError(),
|
||||
function() { new Request("", makeRequestInit(body, "GET")); }
|
||||
);
|
||||
assert_throws(new TypeError(), function() { new Request("", makeRequestInit(body, "GET")); });
|
||||
assert_throws(new TypeError(), function() { new Request("", makeRequestInit(body, "HEAD")); });
|
||||
} else {
|
||||
new Request("", makeRequestInit(body, "GET")); // should not throw
|
||||
}
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
// This file is duplicated verbatim from:
|
||||
// service-workers/service-worker/resources/get-host-info.sub.js
|
||||
// with the rationale that:
|
||||
// - it's better to not reinvent this
|
||||
// - at the same time, referencing tests deep inside a sibling test group is
|
||||
// not a great idea and copying the file is the lesser evil.
|
||||
function get_host_info() {
|
||||
var ORIGINAL_HOST = '127.0.0.1';
|
||||
var REMOTE_HOST = 'localhost';
|
||||
var UNAUTHENTICATED_HOST = 'example.test';
|
||||
var HTTP_PORT = 8000;
|
||||
var HTTPS_PORT = 8443;
|
||||
try {
|
||||
// In W3C test, we can get the hostname and port number in config.json
|
||||
// using wptserve's built-in pipe.
|
||||
// http://wptserve.readthedocs.org/en/latest/pipes.html#built-in-pipes
|
||||
HTTP_PORT = eval('{{ports[http][0]}}');
|
||||
HTTPS_PORT = eval('{{ports[https][0]}}');
|
||||
ORIGINAL_HOST = eval('\'{{host}}\'');
|
||||
REMOTE_HOST = 'www1.' + ORIGINAL_HOST;
|
||||
} catch (e) {
|
||||
}
|
||||
return {
|
||||
HTTP_ORIGIN: 'http://' + ORIGINAL_HOST + ':' + HTTP_PORT,
|
||||
HTTPS_ORIGIN: 'https://' + ORIGINAL_HOST + ':' + HTTPS_PORT,
|
||||
HTTPS_ORIGIN_WITH_CREDS: 'https://foo:bar@' + ORIGINAL_HOST + ':' + HTTPS_PORT,
|
||||
HTTP_REMOTE_ORIGIN: 'http://' + REMOTE_HOST + ':' + HTTP_PORT,
|
||||
HTTPS_REMOTE_ORIGIN: 'https://' + REMOTE_HOST + ':' + HTTPS_PORT,
|
||||
HTTPS_REMOTE_ORIGIN_WITH_CREDS: 'https://foo:bar@' + REMOTE_HOST + ':' + HTTPS_PORT,
|
||||
UNAUTHENTICATED_ORIGIN: 'http://' + UNAUTHENTICATED_HOST + ':' + HTTP_PORT
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue