toolkit/devtools/webconsole/test/test_network_get.html

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:9315a8d3121a
1 <!DOCTYPE HTML>
2 <html lang="en">
3 <head>
4 <meta charset="utf8">
5 <title>Test for the network actor (GET request)</title>
6 <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
7 <script type="text/javascript;version=1.8" src="common.js"></script>
8 <!-- Any copyright is dedicated to the Public Domain.
9 - http://creativecommons.org/publicdomain/zero/1.0/ -->
10 </head>
11 <body>
12 <p>Test for the network actor (GET request)</p>
13
14 <iframe src="http://example.com/chrome/toolkit/devtools/webconsole/test/network_requests_iframe.html"></iframe>
15
16 <script class="testbody" type="text/javascript;version=1.8">
17 SimpleTest.waitForExplicitFinish();
18
19 function startTest()
20 {
21 removeEventListener("load", startTest);
22 attachConsole(["NetworkActivity"], onAttach, true);
23 }
24
25 function onAttach(aState, aResponse)
26 {
27 info("test network GET request");
28
29 onNetworkEvent = onNetworkEvent.bind(null, aState);
30 aState.dbgClient.addListener("networkEvent", onNetworkEvent);
31 onNetworkEventUpdate = onNetworkEventUpdate.bind(null, aState);
32 aState.dbgClient.addListener("networkEventUpdate", onNetworkEventUpdate);
33
34 let iframe = document.querySelector("iframe").contentWindow;
35 iframe.wrappedJSObject.testXhrGet();
36 }
37
38 function onNetworkEvent(aState, aType, aPacket)
39 {
40 is(aPacket.from, aState.actor, "network event actor");
41
42 info("checking the network event packet");
43
44 let netActor = aPacket.eventActor;
45
46 checkObject(netActor, {
47 actor: /[a-z]/,
48 startedDateTime: /^\d+\-\d+\-\d+T.+$/,
49 url: /data\.json/,
50 method: "GET",
51 });
52
53 aState.netActor = netActor.actor;
54
55 aState.dbgClient.removeListener("networkEvent", onNetworkEvent);
56 }
57
58 let updates = [];
59
60 function onNetworkEventUpdate(aState, aType, aPacket)
61 {
62 info("received networkEventUpdate " + aPacket.updateType);
63 is(aPacket.from, aState.netActor, "networkEventUpdate actor");
64
65 updates.push(aPacket.updateType);
66
67 let expectedPacket = null;
68
69 switch (aPacket.updateType) {
70 case "requestHeaders":
71 case "responseHeaders":
72 ok(aPacket.headers > 0, "headers > 0");
73 ok(aPacket.headersSize > 0, "headersSize > 0");
74 break;
75 case "requestCookies":
76 expectedPacket = {
77 cookies: 3,
78 };
79 break;
80 case "requestPostData":
81 ok(false, "got unexpected requestPostData");
82 break;
83 case "responseStart":
84 expectedPacket = {
85 response: {
86 httpVersion: /^HTTP\/\d\.\d$/,
87 status: 200,
88 statusText: "OK",
89 headersSize: /^\d+$/,
90 discardResponseBody: true,
91 },
92 };
93 break;
94 case "responseCookies":
95 expectedPacket = {
96 cookies: 0,
97 };
98 break;
99 case "responseContent":
100 expectedPacket = {
101 mimeType: "application/json",
102 contentSize: 0,
103 discardResponseBody: true,
104 };
105 break;
106 case "eventTimings":
107 expectedPacket = {
108 totalTime: /^\d+$/,
109 };
110 break;
111 default:
112 ok(false, "unknown network event update type: " +
113 aPacket.updateType);
114 return;
115 }
116
117 if (expectedPacket) {
118 info("checking the packet content");
119 checkObject(aPacket, expectedPacket);
120 }
121
122 if (updates.indexOf("responseContent") > -1 &&
123 updates.indexOf("eventTimings") > -1) {
124 aState.dbgClient.removeListener("networkEventUpdate",
125 onNetworkEvent);
126
127 onRequestHeaders = onRequestHeaders.bind(null, aState);
128 aState.client.getRequestHeaders(aState.netActor,
129 onRequestHeaders);
130 }
131 }
132
133 function onRequestHeaders(aState, aResponse)
134 {
135 info("checking request headers");
136
137 ok(aResponse.headers.length > 0, "request headers > 0");
138 ok(aResponse.headersSize > 0, "request headersSize > 0");
139
140 checkHeadersOrCookies(aResponse.headers, {
141 Referer: /network_requests_iframe\.html/,
142 Cookie: /bug768096/,
143 });
144
145 onRequestCookies = onRequestCookies.bind(null, aState);
146 aState.client.getRequestCookies(aState.netActor,
147 onRequestCookies);
148 }
149
150 function onRequestCookies(aState, aResponse)
151 {
152 info("checking request cookies");
153
154 is(aResponse.cookies.length, 3, "request cookies length");
155
156 checkHeadersOrCookies(aResponse.cookies, {
157 foobar: "fooval",
158 omgfoo: "bug768096",
159 badcookie: "bug826798=st3fan",
160 });
161
162 onRequestPostData = onRequestPostData.bind(null, aState);
163 aState.client.getRequestPostData(aState.netActor,
164 onRequestPostData);
165 }
166
167 function onRequestPostData(aState, aResponse)
168 {
169 info("checking request POST data");
170
171 ok(!aResponse.postData.text, "no request POST data");
172 ok(aResponse.postDataDiscarded, "request POST data was discarded");
173
174 onResponseHeaders = onResponseHeaders.bind(null, aState);
175 aState.client.getResponseHeaders(aState.netActor,
176 onResponseHeaders);
177 }
178
179 function onResponseHeaders(aState, aResponse)
180 {
181 info("checking response headers");
182
183 ok(aResponse.headers.length > 0, "response headers > 0");
184 ok(aResponse.headersSize > 0, "response headersSize > 0");
185
186 checkHeadersOrCookies(aResponse.headers, {
187 "Content-Type": /^application\/(json|octet-stream)$/,
188 "Content-Length": /^\d+$/,
189 });
190
191 onResponseCookies = onResponseCookies.bind(null, aState);
192 aState.client.getResponseCookies(aState.netActor,
193 onResponseCookies);
194 }
195
196 function onResponseCookies(aState, aResponse)
197 {
198 info("checking response cookies");
199
200 is(aResponse.cookies.length, 0, "response cookies length");
201
202 onResponseContent = onResponseContent.bind(null, aState);
203 aState.client.getResponseContent(aState.netActor,
204 onResponseContent);
205 }
206
207 function onResponseContent(aState, aResponse)
208 {
209 info("checking response content");
210
211 ok(!aResponse.content.text, "no response content");
212 ok(aResponse.contentDiscarded, "response content was discarded");
213
214 onEventTimings = onEventTimings.bind(null, aState);
215 aState.client.getEventTimings(aState.netActor,
216 onEventTimings);
217 }
218
219 function onEventTimings(aState, aResponse)
220 {
221 info("checking event timings");
222
223 checkObject(aResponse, {
224 timings: {
225 blocked: /^-1|\d+$/,
226 dns: /^-1|\d+$/,
227 connect: /^-1|\d+$/,
228 send: /^-1|\d+$/,
229 wait: /^-1|\d+$/,
230 receive: /^-1|\d+$/,
231 },
232 totalTime: /^\d+$/,
233 });
234
235 closeDebugger(aState, function() {
236 SimpleTest.finish();
237 });
238 }
239
240 addEventListener("load", startTest);
241 </script>
242 </body>
243 </html>

mercurial