netwerk/test/httpserver/test/test_sjs_state.js

Wed, 31 Dec 2014 13:27:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 13:27:57 +0100
branch
TOR_BUG_3246
changeset 6
8bccb770b82d
permissions
-rw-r--r--

Ignore runtime configuration files generated during quality assurance.

     1 /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* vim:set ts=2 sw=2 sts=2 et: */
     3 /* This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this
     5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 // exercises the server's state-preservation API
     9 XPCOMUtils.defineLazyGetter(this, "URL", function() {
    10   return "http://localhost:" + srv.identity.primaryPort;
    11 });
    13 var srv;
    15 function run_test()
    16 {
    17   srv = createServer();
    18   var sjsDir = do_get_file("data/sjs/");
    19   srv.registerDirectory("/", sjsDir);
    20   srv.registerContentType("sjs", "sjs");
    21   srv.registerPathHandler("/path-handler", pathHandler);
    22   srv.start(-1);
    24   function done()
    25   {
    26     do_check_eq(srv.getSharedState("shared-value"), "done!");
    27     do_check_eq(srv.getState("/path-handler", "private-value"),
    28                 "pathHandlerPrivate2");
    29     do_check_eq(srv.getState("/state1.sjs", "private-value"),
    30                 "");
    31     do_check_eq(srv.getState("/state2.sjs", "private-value"),
    32                 "newPrivate5");
    33     do_test_pending();
    34     srv.stop(function() { do_test_finished(); });
    35   }
    37   runHttpTests(tests, done);
    38 }
    41 /************
    42  * HANDLERS *
    43  ************/
    45 var firstTime = true;
    47 function pathHandler(request, response)
    48 {
    49   response.setHeader("Cache-Control", "no-cache", false);
    51   response.setHeader("X-Old-Shared-Value", srv.getSharedState("shared-value"),
    52                      false);
    53   response.setHeader("X-Old-Private-Value", srv.getState("/path-handler", "private-value"),
    54                      false);
    56   var privateValue, sharedValue;
    57   if (firstTime)
    58   {
    59     firstTime = false;
    60     privateValue = "pathHandlerPrivate";
    61     sharedValue = "pathHandlerShared";
    62   }
    63   else
    64   {
    65     privateValue = "pathHandlerPrivate2";
    66     sharedValue = "";
    67   }
    69   srv.setState("/path-handler", "private-value", privateValue);
    70   srv.setSharedState("shared-value", sharedValue);
    72   response.setHeader("X-New-Private-Value", privateValue, false);
    73   response.setHeader("X-New-Shared-Value", sharedValue, false);
    74 }
    77 /***************
    78  * BEGIN TESTS *
    79  ***************/
    81 XPCOMUtils.defineLazyGetter(this, "tests", function() {
    82   return [
    83     new Test(URL + "/state1.sjs?" +
    84                     "newShared=newShared&newPrivate=newPrivate",
    85                     null, start_initial, null),
    86     new Test(URL + "/state1.sjs?" +
    87                     "newShared=newShared2&newPrivate=newPrivate2",
    88                     null, start_overwrite, null),
    89     new Test(URL + "/state1.sjs?" +
    90                     "newShared=&newPrivate=newPrivate3",
    91                     null, start_remove, null),
    92     new Test(URL + "/path-handler",
    93                     null, start_handler, null),
    94     new Test(URL + "/path-handler",
    95                     null, start_handler_again, null),
    96     new Test(URL + "/state2.sjs?" +
    97                     "newShared=newShared4&newPrivate=newPrivate4",
    98                     null, start_other_initial, null),
    99     new Test(URL + "/state2.sjs?" +
   100                     "newShared=",
   101                     null, start_other_remove_ignore, null),
   102     new Test(URL + "/state2.sjs?" +
   103                     "newShared=newShared5&newPrivate=newPrivate5",
   104                     null, start_other_set_new, null),
   105     new Test(URL + "/state1.sjs?" +
   106                     "newShared=done!&newPrivate=",
   107                     null, start_set_remove_original, null)
   108   ];
   109 });
   111 /* Hack around bug 474845 for now. */
   112 function getHeaderFunction(ch)
   113 {
   114   function getHeader(name)
   115   {
   116     try
   117     {
   118       return ch.getResponseHeader(name);
   119     }
   120     catch (e)
   121     {
   122       if (e.result !== Cr.NS_ERROR_NOT_AVAILABLE)
   123         throw e;
   124     }
   125     return "";
   126   }
   127   return getHeader;
   128 }
   130 function expectValues(ch, oldShared, newShared, oldPrivate, newPrivate)
   131 {
   132   var getHeader = getHeaderFunction(ch);
   134   do_check_eq(ch.responseStatus, 200);
   135   do_check_eq(getHeader("X-Old-Shared-Value"), oldShared);
   136   do_check_eq(getHeader("X-New-Shared-Value"), newShared);
   137   do_check_eq(getHeader("X-Old-Private-Value"), oldPrivate);
   138   do_check_eq(getHeader("X-New-Private-Value"), newPrivate);
   139 }
   141 function start_initial(ch, cx)
   142 {
   143 dumpn("XXX start_initial");
   144   expectValues(ch, "", "newShared", "", "newPrivate");
   145 }
   147 function start_overwrite(ch, cx)
   148 {
   149   expectValues(ch, "newShared", "newShared2", "newPrivate", "newPrivate2");
   150 }
   152 function start_remove(ch, cx)
   153 {
   154   expectValues(ch, "newShared2", "", "newPrivate2", "newPrivate3");
   155 }
   157 function start_handler(ch, cx)
   158 {
   159   expectValues(ch, "", "pathHandlerShared", "", "pathHandlerPrivate");
   160 }
   162 function start_handler_again(ch, cx)
   163 {
   164   expectValues(ch, "pathHandlerShared", "",
   165                "pathHandlerPrivate", "pathHandlerPrivate2");
   166 }
   168 function start_other_initial(ch, cx)
   169 {
   170   expectValues(ch, "", "newShared4", "", "newPrivate4");
   171 }
   173 function start_other_remove_ignore(ch, cx)
   174 {
   175   expectValues(ch, "newShared4", "", "newPrivate4", "");
   176 }
   178 function start_other_set_new(ch, cx)
   179 {
   180   expectValues(ch, "", "newShared5", "newPrivate4", "newPrivate5");
   181 }
   183 function start_set_remove_original(ch, cx)
   184 {
   185   expectValues(ch, "newShared5", "done!", "newPrivate3", "");
   186 }

mercurial