diff options
Diffstat (limited to 'testing/web-platform/tests/xhr/status-error.htm')
-rw-r--r-- | testing/web-platform/tests/xhr/status-error.htm | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/testing/web-platform/tests/xhr/status-error.htm b/testing/web-platform/tests/xhr/status-error.htm new file mode 100644 index 0000000000..76709c23d1 --- /dev/null +++ b/testing/web-platform/tests/xhr/status-error.htm @@ -0,0 +1,87 @@ +<!doctype html> +<html> + <head> + <title>XMLHttpRequest: status error handling</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-onerror" data-tested-assertations="../.." /> + <link rel="help" href="https://xhr.spec.whatwg.org/#the-status-attribute" data-tested-assertations="/following::ol/li[3]" /> + </head> + <body> + <p>This shouldn't be tested inside a tunnel.</p> + <div id="log"></div> + <script> + function noError(method, code) { + var test = async_test(document.title + " " + method + " " + code) + + test.step(function() { + var client = new XMLHttpRequest() + client.open(method, "resources/status.py?code=" + code, true) + + client.onreadystatechange = test.step_func(function() { + assert_equals(client.response, "", "response data") + assert_equals(client.status, code, "response status") + + if (client.readyState == client.DONE) + /* Give extra time for a bogus error event to pop up */ + test.step_timeout(() => { test.done() }, 100) + }) + client.onerror = test.step_func(function() { + assert_unreached("HTTP error should not throw error event") + }) + client.send() + }) + } + + function unknownScheme() { + test(() => { + var client = new XMLHttpRequest(); + client.open("GET", "foobar://dummy", false); + try { + client.send(); + } catch(ex) {} + assert_equals(client.status, 0, "response data"); + }, "Unknown scheme"); + } + + + function postOnBlob() { + test(() => { + var u = URL.createObjectURL(new Blob([""], {type: 'text/plain'})); + var client = new XMLHttpRequest(); + client.open("POST", u, false); + try { + client.send(); + } catch(ex) {} + assert_equals(client.status, 0, "response data"); + }, "POST on blob uri"); + } + + noError('GET', 200) + noError('GET', 400) + noError('GET', 401) + noError('GET', 404) + noError('GET', 410) + noError('GET', 500) + noError('GET', 699) + + noError('HEAD', 200) + noError('HEAD', 404) + noError('HEAD', 500) + noError('HEAD', 699) + + noError('POST', 200) + noError('POST', 404) + noError('POST', 500) + noError('POST', 699) + + noError('PUT', 200) + noError('PUT', 404) + noError('PUT', 500) + noError('PUT', 699) + + unknownScheme(); + postOnBlob(); + </script> + </body> +</html> |