Wed, 31 Dec 2014 13:27:57 +0100
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 }