summaryrefslogtreecommitdiffstats
path: root/test/wpt/tests/xhr/status-error.htm
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-21 20:56:19 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-21 20:56:19 +0000
commit0b6210cd37b68b94252cb798598b12974a20e1c1 (patch)
treee371686554a877842d95aa94f100bee552ff2a8e /test/wpt/tests/xhr/status-error.htm
parentInitial commit. (diff)
downloadnode-undici-upstream.tar.xz
node-undici-upstream.zip
Adding upstream version 5.28.2+dfsg1+~cs23.11.12.3.upstream/5.28.2+dfsg1+_cs23.11.12.3upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/wpt/tests/xhr/status-error.htm')
-rw-r--r--test/wpt/tests/xhr/status-error.htm87
1 files changed, 87 insertions, 0 deletions
diff --git a/test/wpt/tests/xhr/status-error.htm b/test/wpt/tests/xhr/status-error.htm
new file mode 100644
index 0000000..76709c2
--- /dev/null
+++ b/test/wpt/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>