products/Sources/formale Sprachen/C/Firefox/testing/web-platform/tests/cors/status-async.htm
<!DOCTYPE html >
<meta charset=utf-8>
<title >CORS - status</title >
<meta name=author title ="Odin Hørthe Omdal" href="mailto:odiho@opera.com" >
<meta name=timeout content=long>
<script src=/resources/testharness.js></script >
<script src=/resources/testharnessreport.js></script >
<script src=support.js?pipe=sub ></script >
<h1 >Status returned</h1 >
<div id=log></div >
<script >
function statusRequest(method, code , text, content, type) {
async_test("Status on " + method + " " + code )
.step(function() {
var client = new XMLHttpRequest()
client.open(method, CROSSDOMAIN + "resources/status.py?code="
+ code + "&text=" + text + "&content=" + content + "&type=" + type, true)
client.onreadystatechange = this.step_func(function() {
if (client.readyState != client.DONE)
return
assert_equals(client.status, code , 'response status' )
assert_equals(client.statusText, text, 'response status text' )
assert_equals(client.getResponseHeader("X-Request-Method" ), method, 'method' )
if(method != "HEAD" ) {
if(type == "text/xml" ) {
assert_equals(client.responseXML.documentElement.localName,
"x" , 'responseXML' )
}
assert_equals(client.response, content, 'response content' )
}
this.done()
})
client.send(null)
})
}
/* method code text content type */
statusRequest("GET" , 200, 'OK' , 'Not today.' , '' )
statusRequest("GET" , 201, 'OK/Created' , 'Not today 01.' , '' )
statusRequest("GET" , 202, 'OK/Accepted' , 'Not today 02.' , '' )
statusRequest("GET" , 203, 'OK/Non-Authoritative Information' , 'Not today 03.' , '' )
statusRequest("GET" , 204, 'OK/No Content' , '' , '' ) // specifically no-content
statusRequest("GET" , 205, 'OK/Reset Content' , '' , '' ) // specifically no-content
statusRequest("GET" , 206, 'OK/Partial Content' , 'Not today 06.' , '' )
statusRequest("GET" , 209, 'OK' , 'Not today 09.' , '' )
statusRequest("GET" , 299, 'OK' , 'Not today 99.' , '' )
statusRequest("POST" , 200, 'OK' , '402<\/x>' , 'text/xml' )
statusRequest("HEAD" , 200, 'OK' , 'Nice!' , 'text/doesnotmatter' )
statusRequest("PUT" , 200, 'OK' , '400' , 'text/plain' )
statusRequest("CHICKEN" , 200, 'OK' , 'bah' , '' )
function statusRequestFail(method, code , expect_code, nonsimple) {
if (expect_code === undefined)
expect_code = code
async_test("Status on " + method + " " + code + (nonsimple?' (nonsimple)' :'' ))
.step(function() {
var client = new XMLHttpRequest()
client.open(method, CROSSDOMAIN + "resources/status.py?code="
+ code + '&headers=x-nonsimple&text=OHAI' , true)
if (nonsimple)
client.setRequestHeader('x-nonsimple' , true)
client.onreadystatechange = this.step_func(function() {
if (client.readyState < client.HEADERS_RECEIVED)
return
assert_equals(client.response, "" , "response data" )
assert_equals(client.status, expect_code, "response status" )
/* Response code 200 forces webserver to send OK(?) */
if(expect_code == 200)
assert_equals(client.statusText, "OK" , "response statusText" )
else
assert_equals(client.statusText, (expect_code == 0 ? "" : "OHAI" ), "response statusText" )
if (client.readyState == client.DONE)
this.done()
})
client.onerror = this.step_func(function(e) {
assert_unreached("Got error event." )
})
client.send()
})
}
/* expect
method code status */
statusRequestFail("GET" , 400)
statusRequestFail("HEAD" , 401)
statusRequestFail("POST" , 404)
statusRequestFail("POST" , 500)
/* Preflight response status is not 200, so the algorithm set status to 0. */
statusRequestFail("PUT" , 699, 0)
statusRequestFail("CHICKEN" , 501, 0)
/* "forced"
preflight */
statusRequestFail("GET" , 400, 0, true)
statusRequestFail("HEAD" , 401, 0, true)
statusRequestFail("POST" , 404, 0, true)
statusRequestFail("PUT" , 699, 0, true)
statusRequestFail("CHICKEN" , 501, 0, true)
</script >
Messung V0.5 C=92 H=90 G=90
¤ Dauer der Verarbeitung: 0.25 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland