[X2Go-Commits] [pale-moon] 87/294: Part 2: Add tests

git-admin at x2go.org git-admin at x2go.org
Sat Apr 27 08:57:51 CEST 2019


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch upstream/28.5.0
in repository pale-moon.

commit 367d77ee9a6df15cacaf1a1f4032f834e972b335
Author: wolfbeast <mcwerewolf at wolfbeast.com>
Date:   Thu Mar 7 14:32:42 2019 +0100

    Part 2: Add tests
    
    Tag #993.
---
 netwerk/test/mochitests/mochitest.ini           |   2 +
 netwerk/test/mochitests/test_accept_header.html | 106 ++++++++++++++++++++++++
 netwerk/test/mochitests/test_accept_header.sjs  |  48 +++++++++++
 3 files changed, 156 insertions(+)

diff --git a/netwerk/test/mochitests/mochitest.ini b/netwerk/test/mochitests/mochitest.ini
index f8a9190..3cd5a67 100644
--- a/netwerk/test/mochitests/mochitest.ini
+++ b/netwerk/test/mochitests/mochitest.ini
@@ -25,3 +25,5 @@ support-files =
 [test_viewsource_unlinkable.html]
 [test_xhr_method_case.html]
 [test_1396395.html]
+[test_accept_header.html]
+support-files = test_accept_header.sjs
diff --git a/netwerk/test/mochitests/test_accept_header.html b/netwerk/test/mochitests/test_accept_header.html
new file mode 100644
index 0000000..b843423
--- /dev/null
+++ b/netwerk/test/mochitests/test_accept_header.html
@@ -0,0 +1,106 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Accept header</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<script>
+
+// All the requests are sent to test_accept_header.sjs which will return
+// different content based on the queryString. When the queryString is 'get',
+// test_accept_header.sjs returns a JSON object with the latest request and its
+// accept header value.
+
+function test_last_request_and_continue(query, expected) {
+  fetch("test_accept_header.sjs?get").then(r => r.json()).then(json => {
+    is(json.type, query, "Expected: " + query);
+    is(json.accept, expected, "Accept header: " + expected);
+    next();
+  });
+}
+
+function test_iframe() {
+  let observer = new PerformanceObserver(function(list, obj) {
+    obj.disconnect();
+
+    list.getEntries().forEach(entry => {
+      if (entry.name.endsWith("test_accept_header.sjs?iframe")) {
+        obj.disconnect();
+        test_last_request_and_continue("iframe", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
+      }
+    });
+  });
+
+  observer.observe({entryTypes: ["resource"]});
+
+  let ifr = document.createElement("iframe");
+  ifr.src = "test_accept_header.sjs?iframe";
+  document.body.appendChild(ifr);
+}
+
+function test_image() {
+  let i = new Image();
+  i.src = "test_accept_header.sjs?image";
+  i.onload = function() {
+    // Fetch spec says we should have: "image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5"
+    test_last_request_and_continue("image", "image/webp,image/png,image/*;q=0.8,*/*;q=0.5");
+  }
+}
+
+function test_style() {
+  let observer = new PerformanceObserver(function(list, obj) {
+    obj.disconnect();
+
+    list.getEntries().forEach(entry => {
+      if (entry.name.endsWith("test_accept_header.sjs?style")) {
+        obj.disconnect();
+        test_last_request_and_continue("style", "text/css,*/*;q=0.1");
+      }
+    });
+  });
+
+  observer.observe({entryTypes: ["resource"]});
+
+  let head = document.getElementsByTagName("head")[0];
+  let link = document.createElement("link");
+  link.rel = "stylesheet";
+  link.type = "text/css";
+  link.href = "test_accept_header.sjs?style";
+  head.appendChild(link);
+}
+
+function test_worker() {
+  let w = new Worker("test_accept_header.sjs?worker");
+  w.onmessage = function() {
+    test_last_request_and_continue("worker", "*/*");
+  }
+}
+
+let tests = [
+  test_iframe,
+  test_image,
+  test_style,
+  test_worker,
+];
+
+function next() {
+  if (tests.length == 0) {
+    SimpleTest.finish();
+    return;
+  }
+
+  let test = tests.shift();
+  test();
+}
+
+SimpleTest.waitForExplicitFinish();
+
+SpecialPowers.pushPrefEnv({ "set": [
+  [ "dom.enable_performance_observer", true ]
+]}, next);
+
+</script>
+</body>
+</html> 
diff --git a/netwerk/test/mochitests/test_accept_header.sjs b/netwerk/test/mochitests/test_accept_header.sjs
new file mode 100644
index 0000000..035c886
--- /dev/null
+++ b/netwerk/test/mochitests/test_accept_header.sjs
@@ -0,0 +1,48 @@
+function handleRequest(request, response) {
+  response.setStatusLine(request.httpVersion, "200", "OK");
+
+  if (request.queryString == "worker") {
+    response.setHeader("Content-Type", "application/json", false);
+    response.write("postMessage(42)");
+
+    setState("data", JSON.stringify({type: "worker", accept: request.getHeader("Accept") }));
+    return;
+  }
+
+  if (request.queryString == "image") {
+    // A 1x1 PNG image.
+    // Source: https://commons.wikimedia.org/wiki/File:1x1.png (Public Domain)
+    const IMAGE = atob("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAA" +
+                       "ACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=");
+
+    response.setHeader("Content-Type", "image/png", false);
+    response.write(IMAGE);
+
+    setState("data", JSON.stringify({type: "image", accept: request.getHeader("Accept") }));
+    return;
+  }
+
+  if (request.queryString == "style") {
+    response.setHeader("Content-Type", "text/css", false);
+    response.write("");
+
+    setState("data", JSON.stringify({type: "style", accept: request.getHeader("Accept") }));
+    return;
+  }
+
+  if (request.queryString == "iframe") {
+    response.setHeader("Content-Type", "text/html", false);
+    response.write("<h1>Hello world!</h1>");
+
+    setState("data", JSON.stringify({type: "iframe", accept: request.getHeader("Accept") }));
+    return;
+  }
+
+  if (request.queryString == "get") {
+    response.setHeader("Content-Type", "text/javascript", false);
+    response.write(getState("data"));
+
+    setState("data", "");
+    return;
+  }
+}

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/pale-moon.git


More information about the x2go-commits mailing list