content/base/test/test_CrossSiteXHR_cache.html

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
     5   <title>Test for Cross Site XMLHttpRequest</title>
     6   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>        
     7   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
     8 </head>
     9 <body onload="gen.next()">
    10 <p id="display">
    11 <iframe id=loader></iframe>
    12 </p>
    13 <div id="content" style="display: none">
    15 </div>
    16 <pre id="test">
    17 <script class="testbody" type="application/javascript;version=1.7">
    19 SimpleTest.waitForExplicitFinish();
    21 window.addEventListener("message", function(e) {
    22   gen.send(e.data);
    23 }, false);
    25 gen = runTest();
    27 function runTest() {
    28   var loader = document.getElementById('loader');
    29   var loaderWindow = loader.contentWindow;
    30   loader.onload = function () { gen.next() };
    32   loader.src = "http://example.org/tests/content/base/test/file_CrossSiteXHR_inner.html";
    33   origin = "http://example.org";
    34   yield undefined;
    36   tests = [{ pass: 0,
    37              method: "GET",
    38              headers: { "x-my-header": "myValue" },
    39            },
    40            { pass: 1,
    41              method: "GET",
    42              headers: { "x-my-header": "myValue" },
    43              allowHeaders: "x-my-header",
    44              cacheTime: 3600
    45            },
    46            { pass: 1,
    47              method: "GET",
    48              headers: { "x-my-header": "myValue" },
    49            },
    50            { pass: 1,
    51              method: "GET",
    52              headers: { "x-my-header": "myValue" },
    53            },
    54            { pass: 0,
    55              method: "GET",
    56              headers: { "x-my-header": "myValue",
    57                         "y-my-header": "second" },
    58            },
    59            { pass: 1,
    60              method: "GET",
    61              headers: { "y-my-header": "hello" },
    62              allowHeaders: "y-my-header",
    63            },
    64            { pass: 0,
    65              method: "GET",
    66              headers: { "y-my-header": "hello" },
    67            },
    68            { pass: 1,
    69              method: "GET",
    70              headers: { "y-my-header": "hello" },
    71              allowHeaders: "y-my-header,x-my-header",
    72              cacheTime: 3600,
    73            },
    74            { pass: 1,
    75              method: "GET",
    76              headers: { "x-my-header": "myValue",
    77                         "y-my-header": "second" },
    78            },
    79            { newTest: "*******" },
    80            { pass: 0,
    81              method: "GET",
    82              headers: { "x-my-header": "myValue" },
    83            },
    84            { pass: 1,
    85              method: "GET",
    86              headers: { "x-my-header": "myValue" },
    87              allowHeaders: "x-my-header",
    88              cacheTime: 2
    89            },
    90            { pause: 2.1 },
    91            { pass: 0,
    92              method: "GET",
    93              headers: { "x-my-header": "myValue" },
    94            },
    95            { newTest: "*******" },
    96            { pass: 1,
    97              method: "GET",
    98              headers: { "x-my-header": "myValue" },
    99              allowHeaders: "x-my-header, y-my-header",
   100              cacheTime: 3600
   101            },
   102            { pass: 1,
   103              method: "GET",
   104              headers: { "x-my-header": "myValue" },
   105            },
   106            { pass: 1,
   107              method: "GET",
   108              headers: { "y-my-header": "myValue" },
   109            },
   110            { pass: 0,
   111              method: "GET",
   112              headers: { "z-my-header": "myValue" },
   113            },
   114            { newTest: "*******" },
   115            { pass: 1,
   116              method: "GET",
   117              headers: { "x-my-header": "myValue" },
   118              allowHeaders: "x-my-header",
   119              cacheTime: "\t  3600 \t ",
   120            },
   121            { pass: 1,
   122              method: "GET",
   123              headers: { "x-my-header": "myValue" },
   124            },
   125            { newTest: "*******" },
   126            { pass: 1,
   127              method: "GET",
   128              headers: { "x-my-header": "myValue" },
   129              allowHeaders: "x-my-header",
   130              cacheTime: "3600 3",
   131            },
   132            { pass: 0,
   133              method: "GET",
   134              headers: { "x-my-header": "myValue" },
   135            },
   136            { newTest: "*******" },
   137            { pass: 1,
   138              method: "GET",
   139              headers: { "x-my-header": "myValue" },
   140              allowHeaders: "x-my-header",
   141              cacheTime: "asdf",
   142            },
   143            { pass: 0,
   144              method: "GET",
   145              headers: { "x-my-header": "myValue" },
   146            },
   147            { newTest: "*******" },
   148            { pass: 1,
   149              method: "GET",
   150              headers: { "first-header": "myValue" },
   151              allowHeaders: "first-header",
   152              cacheTime: 2,
   153            },
   154            { pass: 1,
   155              method: "GET",
   156              headers: { "second-header": "myValue" },
   157              allowHeaders: "second-header",
   158              cacheTime: 3600,
   159            },
   160            { pass: 1,
   161              method: "GET",
   162              headers: { "third-header": "myValue" },
   163              allowHeaders: "third-header",
   164              cacheTime: 2,
   165            },
   166            { pause: 2.1 },
   167            { pass: 1,
   168              method: "GET",
   169              headers: { "second-header": "myValue" },
   170            },
   171            { pass: 0,
   172              method: "GET",
   173              headers: { "first-header": "myValue" },
   174            },
   175            { newTest: "*******" },
   176            { pass: 1,
   177              method: "GET",
   178              headers: { "first-header": "myValue" },
   179              allowHeaders: "first-header",
   180              cacheTime: 2,
   181            },
   182            { pass: 1,
   183              method: "GET",
   184              headers: { "second-header": "myValue" },
   185              allowHeaders: "second-header",
   186              cacheTime: 3600,
   187            },
   188            { pass: 1,
   189              method: "GET",
   190              headers: { "third-header": "myValue" },
   191              allowHeaders: "third-header",
   192              cacheTime: 2,
   193            },
   194            { pause: 2.1 },
   195            { pass: 1,
   196              method: "GET",
   197              headers: { "second-header": "myValue" },
   198            },
   199            { pass: 0,
   200              method: "GET",
   201              headers: { "third-header": "myValue" },
   202            },
   203            { newTest: "*******" },
   204            { pass: 0,
   205              method: "DELETE",
   206            },
   207            { pass: 1,
   208              method: "DELETE",
   209              allowMethods: "DELETE",
   210              cacheTime: 3600
   211            },
   212            { pass: 1,
   213              method: "DELETE",
   214            },
   215            { pass: 1,
   216              method: "DELETE",
   217            },
   218            { pass: 0,
   219              method: "PATCH",
   220            },
   221            { pass: 1,
   222              method: "PATCH",
   223              allowMethods: "PATCH",
   224            },
   225            { pass: 0,
   226              method: "PATCH",
   227            },
   228            { pass: 1,
   229              method: "PATCH",
   230              allowMethods: "PATCH",
   231              cacheTime: 3600,
   232            },
   233            { pass: 1,
   234              method: "PATCH",
   235            },
   236            { pass: 0,
   237              method: "DELETE",
   238            },
   239            { pass: 0,
   240              method: "PUT",
   241            },
   242            { newTest: "*******" },
   243            { pass: 0,
   244              method: "DELETE",
   245            },
   246            { pass: 1,
   247              method: "DELETE",
   248              allowMethods: "DELETE",
   249              cacheTime: 2
   250            },
   251            { pause: 2.1 },
   252            { pass: 0,
   253              method: "DELETE",
   254            },
   255            { newTest: "*******" },
   256            { pass: 1,
   257              method: "DELETE",
   258              allowMethods: "DELETE, PUT",
   259              cacheTime: 3600
   260            },
   261            { pass: 1,
   262              method: "DELETE",
   263            },
   264            { pass: 1,
   265              method: "PUT",
   266            },
   267            { pass: 0,
   268              method: "PATCH",
   269            },
   270            { newTest: "*******" },
   271            { pass: 1,
   272              method: "FIRST",
   273              allowMethods: "FIRST",
   274              cacheTime: 2,
   275            },
   276            { pass: 1,
   277              method: "SECOND",
   278              allowMethods: "SECOND",
   279              cacheTime: 3600,
   280            },
   281            { pass: 1,
   282              method: "THIRD",
   283              allowMethods: "THIRD",
   284              cacheTime: 2,
   285            },
   286            { pause: 2.1 },
   287            { pass: 1,
   288              method: "SECOND",
   289            },
   290            { pass: 0,
   291              method: "FIRST",
   292            },
   293            { newTest: "*******" },
   294            { pass: 1,
   295              method: "FIRST",
   296              allowMethods: "FIRST",
   297              cacheTime: 2,
   298            },
   299            { pass: 1,
   300              method: "SECOND",
   301              allowMethods: "SECOND",
   302              cacheTime: 3600,
   303            },
   304            { pass: 1,
   305              method: "THIRD",
   306              allowMethods: "THIRD",
   307              cacheTime: 2,
   308            },
   309            { pause: 2.1 },
   310            { pass: 1,
   311              method: "SECOND",
   312            },
   313            { pass: 0,
   314              method: "THIRD",
   315            },
   316            { newTest: "*******" },
   317            { pass: 1,
   318              method: "GET",
   319              headers: { "x-my-header": "x-value" },
   320              allowHeaders: "x-my-header",
   321              cacheTime: 3600,
   322            },
   323            { pass: 1,
   324              method: "GET",
   325              headers: { "x-my-header": "x-value" }
   326            },
   327            { pass: 0,
   328              method: "GET",
   329              headers: { "y-my-header": "y-value" }
   330            },
   331            { pass: 0,
   332              method: "GET",
   333              headers: { "x-my-header": "x-value" }
   334            },
   335            { newTest: "*******" },
   336            { pass: 1,
   337              method: "GET",
   338              headers: { "x-my-header": "x-value" },
   339              allowHeaders: "x-my-header",
   340              cacheTime: 3600,
   341            },
   342            { pass: 1,
   343              method: "GET",
   344              headers: { "x-my-header": "x-value" },
   345            },
   346            { pass: 0,
   347              method: "PUT",
   348            },
   349            { pass: 0,
   350              method: "GET",
   351              headers: { "x-my-header": "x-value" },
   352            },
   353            { newTest: "*******" },
   354            { pass: 1,
   355              method: "GET",
   356              headers: { "x-my-header": "x-value" },
   357              allowHeaders: "x-my-header",
   358              cacheTime: 3600,
   359            },
   360            { pass: 1,
   361              method: "GET",
   362              headers: { "x-my-header": "x-value" },
   363            },
   364            { pass: 0,
   365              method: "GET",
   366              noOrigin: 1,
   367            },
   368            { pass: 0,
   369              method: "GET",
   370              headers: { "x-my-header": "x-value" },
   371            },
   372            { newTest: "*******" },
   373            { pass: 1,
   374              method: "DELETE",
   375              allowMethods: "DELETE",
   376              cacheTime: 3600,
   377            },
   378            { pass: 1,
   379              method: "DELETE"
   380            },
   381            { pass: 0,
   382              method: "PUT"
   383            },
   384            { pass: 0,
   385              method: "DELETE"
   386            },
   387            { newTest: "*******" },
   388            { pass: 1,
   389              method: "DELETE",
   390              allowMethods: "DELETE",
   391              cacheTime: 3600,
   392            },
   393            { pass: 1,
   394              method: "DELETE"
   395            },
   396            { pass: 0,
   397              method: "DELETE",
   398              headers: { "my-header": "value" },
   399            },
   400            { pass: 0,
   401              method: "DELETE"
   402            },
   403            { newTest: "*******" },
   404            { pass: 1,
   405              method: "DELETE",
   406              allowMethods: "DELETE",
   407              cacheTime: 3600,
   408            },
   409            { pass: 1,
   410              method: "DELETE"
   411            },
   412            { pass: 0,
   413              method: "GET",
   414              noOrigin: 1,
   415            },
   416            { pass: 0,
   417              method: "DELETE"
   418            },
   419            ];
   421   for (let i = 0; i < 110; i++) {
   422     tests.push({ newTest: "*******" },
   423                { pass: 1,
   424                  method: "DELETE",
   425                  allowMethods: "DELETE",
   426                  cacheTime: 3600,
   427                });
   428   }
   430   baseURL = "http://mochi.test:8888/tests/content/base/test/" +
   431              "file_CrossSiteXHR_cache_server.sjs?";
   432   setStateURL = baseURL + "setState=";
   434   var unique = Date.now();
   435   for (test of tests) {
   436     if (test.newTest) {
   437       unique++;
   438       continue;
   439     }
   440     if (test.pause) {
   441       setTimeout(function() { gen.next() }, test.pause * 1000);
   442       yield undefined;
   443       continue;
   444     }
   446     req = {
   447       url: baseURL + "c=" + unique,
   448       method: test.method,
   449       headers: test.headers,
   450     };
   452     sec = { allowOrigin: test.noOrigin ? "" : origin,
   453             allowHeaders: test.allowHeaders,
   454             allowMethods: test.allowMethods,
   455             cacheTime: test.cacheTime };
   456     xhr = new XMLHttpRequest();
   457     xhr.open("POST", setStateURL + escape(sec.toSource()), true);
   458     xhr.onloadend = function() { gen.next(); }
   459     xhr.send();
   460     yield undefined;
   462     loaderWindow.postMessage(req.toSource(), origin);
   464     res = eval(yield);
   466     testName = test.toSource() + " (index " + tests.indexOf(test) + ")";
   468     if (test.pass) {
   469       is(res.didFail, false,
   470         "shouldn't have failed in test for " + testName);
   471       is(res.status, 200, "wrong status in test for " + testName);
   472       is(res.responseXML, "<res>hello pass</res>",
   473          "wrong responseXML in test for " + testName);
   474       is(res.responseText, "<res>hello pass</res>\n",
   475          "wrong responseText in test for " + testName);
   476       is(res.events.join(","),
   477          "opening,rs1,sending,loadstart,rs2,rs3,rs4,load,loadend",
   478          "wrong events in test for " + testName);
   479     }
   480     else {
   481       is(res.didFail, true,
   482         "should have failed in test for " + testName);
   483       is(res.status, 0, "wrong status in test for " + testName);
   484       is(res.responseXML, null,
   485          "wrong responseXML in test for " + testName);
   486       is(res.responseText, "",
   487          "wrong responseText in test for " + testName);
   488       is(res.events.join(","),
   489          "opening,rs1,sending,loadstart,rs2,rs4,error,loadend",
   490          "wrong events in test for " + testName);
   491       is(res.progressEvents, 0,
   492          "wrong events in test for " + testName);
   493     }
   494   }
   496   SimpleTest.finish();
   498   yield undefined;
   499 }
   501 </script>
   502 </pre>
   503 </body>
   504 </html>

mercurial