1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/devtools/webconsole/test/test_network_get.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,243 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html lang="en"> 1.6 +<head> 1.7 + <meta charset="utf8"> 1.8 + <title>Test for the network actor (GET request)</title> 1.9 + <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 1.10 + <script type="text/javascript;version=1.8" src="common.js"></script> 1.11 + <!-- Any copyright is dedicated to the Public Domain. 1.12 + - http://creativecommons.org/publicdomain/zero/1.0/ --> 1.13 +</head> 1.14 +<body> 1.15 +<p>Test for the network actor (GET request)</p> 1.16 + 1.17 +<iframe src="http://example.com/chrome/toolkit/devtools/webconsole/test/network_requests_iframe.html"></iframe> 1.18 + 1.19 +<script class="testbody" type="text/javascript;version=1.8"> 1.20 +SimpleTest.waitForExplicitFinish(); 1.21 + 1.22 +function startTest() 1.23 +{ 1.24 + removeEventListener("load", startTest); 1.25 + attachConsole(["NetworkActivity"], onAttach, true); 1.26 +} 1.27 + 1.28 +function onAttach(aState, aResponse) 1.29 +{ 1.30 + info("test network GET request"); 1.31 + 1.32 + onNetworkEvent = onNetworkEvent.bind(null, aState); 1.33 + aState.dbgClient.addListener("networkEvent", onNetworkEvent); 1.34 + onNetworkEventUpdate = onNetworkEventUpdate.bind(null, aState); 1.35 + aState.dbgClient.addListener("networkEventUpdate", onNetworkEventUpdate); 1.36 + 1.37 + let iframe = document.querySelector("iframe").contentWindow; 1.38 + iframe.wrappedJSObject.testXhrGet(); 1.39 +} 1.40 + 1.41 +function onNetworkEvent(aState, aType, aPacket) 1.42 +{ 1.43 + is(aPacket.from, aState.actor, "network event actor"); 1.44 + 1.45 + info("checking the network event packet"); 1.46 + 1.47 + let netActor = aPacket.eventActor; 1.48 + 1.49 + checkObject(netActor, { 1.50 + actor: /[a-z]/, 1.51 + startedDateTime: /^\d+\-\d+\-\d+T.+$/, 1.52 + url: /data\.json/, 1.53 + method: "GET", 1.54 + }); 1.55 + 1.56 + aState.netActor = netActor.actor; 1.57 + 1.58 + aState.dbgClient.removeListener("networkEvent", onNetworkEvent); 1.59 +} 1.60 + 1.61 +let updates = []; 1.62 + 1.63 +function onNetworkEventUpdate(aState, aType, aPacket) 1.64 +{ 1.65 + info("received networkEventUpdate " + aPacket.updateType); 1.66 + is(aPacket.from, aState.netActor, "networkEventUpdate actor"); 1.67 + 1.68 + updates.push(aPacket.updateType); 1.69 + 1.70 + let expectedPacket = null; 1.71 + 1.72 + switch (aPacket.updateType) { 1.73 + case "requestHeaders": 1.74 + case "responseHeaders": 1.75 + ok(aPacket.headers > 0, "headers > 0"); 1.76 + ok(aPacket.headersSize > 0, "headersSize > 0"); 1.77 + break; 1.78 + case "requestCookies": 1.79 + expectedPacket = { 1.80 + cookies: 3, 1.81 + }; 1.82 + break; 1.83 + case "requestPostData": 1.84 + ok(false, "got unexpected requestPostData"); 1.85 + break; 1.86 + case "responseStart": 1.87 + expectedPacket = { 1.88 + response: { 1.89 + httpVersion: /^HTTP\/\d\.\d$/, 1.90 + status: 200, 1.91 + statusText: "OK", 1.92 + headersSize: /^\d+$/, 1.93 + discardResponseBody: true, 1.94 + }, 1.95 + }; 1.96 + break; 1.97 + case "responseCookies": 1.98 + expectedPacket = { 1.99 + cookies: 0, 1.100 + }; 1.101 + break; 1.102 + case "responseContent": 1.103 + expectedPacket = { 1.104 + mimeType: "application/json", 1.105 + contentSize: 0, 1.106 + discardResponseBody: true, 1.107 + }; 1.108 + break; 1.109 + case "eventTimings": 1.110 + expectedPacket = { 1.111 + totalTime: /^\d+$/, 1.112 + }; 1.113 + break; 1.114 + default: 1.115 + ok(false, "unknown network event update type: " + 1.116 + aPacket.updateType); 1.117 + return; 1.118 + } 1.119 + 1.120 + if (expectedPacket) { 1.121 + info("checking the packet content"); 1.122 + checkObject(aPacket, expectedPacket); 1.123 + } 1.124 + 1.125 + if (updates.indexOf("responseContent") > -1 && 1.126 + updates.indexOf("eventTimings") > -1) { 1.127 + aState.dbgClient.removeListener("networkEventUpdate", 1.128 + onNetworkEvent); 1.129 + 1.130 + onRequestHeaders = onRequestHeaders.bind(null, aState); 1.131 + aState.client.getRequestHeaders(aState.netActor, 1.132 + onRequestHeaders); 1.133 + } 1.134 +} 1.135 + 1.136 +function onRequestHeaders(aState, aResponse) 1.137 +{ 1.138 + info("checking request headers"); 1.139 + 1.140 + ok(aResponse.headers.length > 0, "request headers > 0"); 1.141 + ok(aResponse.headersSize > 0, "request headersSize > 0"); 1.142 + 1.143 + checkHeadersOrCookies(aResponse.headers, { 1.144 + Referer: /network_requests_iframe\.html/, 1.145 + Cookie: /bug768096/, 1.146 + }); 1.147 + 1.148 + onRequestCookies = onRequestCookies.bind(null, aState); 1.149 + aState.client.getRequestCookies(aState.netActor, 1.150 + onRequestCookies); 1.151 +} 1.152 + 1.153 +function onRequestCookies(aState, aResponse) 1.154 +{ 1.155 + info("checking request cookies"); 1.156 + 1.157 + is(aResponse.cookies.length, 3, "request cookies length"); 1.158 + 1.159 + checkHeadersOrCookies(aResponse.cookies, { 1.160 + foobar: "fooval", 1.161 + omgfoo: "bug768096", 1.162 + badcookie: "bug826798=st3fan", 1.163 + }); 1.164 + 1.165 + onRequestPostData = onRequestPostData.bind(null, aState); 1.166 + aState.client.getRequestPostData(aState.netActor, 1.167 + onRequestPostData); 1.168 +} 1.169 + 1.170 +function onRequestPostData(aState, aResponse) 1.171 +{ 1.172 + info("checking request POST data"); 1.173 + 1.174 + ok(!aResponse.postData.text, "no request POST data"); 1.175 + ok(aResponse.postDataDiscarded, "request POST data was discarded"); 1.176 + 1.177 + onResponseHeaders = onResponseHeaders.bind(null, aState); 1.178 + aState.client.getResponseHeaders(aState.netActor, 1.179 + onResponseHeaders); 1.180 +} 1.181 + 1.182 +function onResponseHeaders(aState, aResponse) 1.183 +{ 1.184 + info("checking response headers"); 1.185 + 1.186 + ok(aResponse.headers.length > 0, "response headers > 0"); 1.187 + ok(aResponse.headersSize > 0, "response headersSize > 0"); 1.188 + 1.189 + checkHeadersOrCookies(aResponse.headers, { 1.190 + "Content-Type": /^application\/(json|octet-stream)$/, 1.191 + "Content-Length": /^\d+$/, 1.192 + }); 1.193 + 1.194 + onResponseCookies = onResponseCookies.bind(null, aState); 1.195 + aState.client.getResponseCookies(aState.netActor, 1.196 + onResponseCookies); 1.197 +} 1.198 + 1.199 +function onResponseCookies(aState, aResponse) 1.200 +{ 1.201 + info("checking response cookies"); 1.202 + 1.203 + is(aResponse.cookies.length, 0, "response cookies length"); 1.204 + 1.205 + onResponseContent = onResponseContent.bind(null, aState); 1.206 + aState.client.getResponseContent(aState.netActor, 1.207 + onResponseContent); 1.208 +} 1.209 + 1.210 +function onResponseContent(aState, aResponse) 1.211 +{ 1.212 + info("checking response content"); 1.213 + 1.214 + ok(!aResponse.content.text, "no response content"); 1.215 + ok(aResponse.contentDiscarded, "response content was discarded"); 1.216 + 1.217 + onEventTimings = onEventTimings.bind(null, aState); 1.218 + aState.client.getEventTimings(aState.netActor, 1.219 + onEventTimings); 1.220 +} 1.221 + 1.222 +function onEventTimings(aState, aResponse) 1.223 +{ 1.224 + info("checking event timings"); 1.225 + 1.226 + checkObject(aResponse, { 1.227 + timings: { 1.228 + blocked: /^-1|\d+$/, 1.229 + dns: /^-1|\d+$/, 1.230 + connect: /^-1|\d+$/, 1.231 + send: /^-1|\d+$/, 1.232 + wait: /^-1|\d+$/, 1.233 + receive: /^-1|\d+$/, 1.234 + }, 1.235 + totalTime: /^\d+$/, 1.236 + }); 1.237 + 1.238 + closeDebugger(aState, function() { 1.239 + SimpleTest.finish(); 1.240 + }); 1.241 +} 1.242 + 1.243 +addEventListener("load", startTest); 1.244 +</script> 1.245 +</body> 1.246 +</html>