summaryrefslogtreecommitdiffstats
path: root/devtools/shared/webconsole/test/test_network_post.html
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/webconsole/test/test_network_post.html')
-rw-r--r--devtools/shared/webconsole/test/test_network_post.html272
1 files changed, 272 insertions, 0 deletions
diff --git a/devtools/shared/webconsole/test/test_network_post.html b/devtools/shared/webconsole/test/test_network_post.html
new file mode 100644
index 000000000..d96b9b0b7
--- /dev/null
+++ b/devtools/shared/webconsole/test/test_network_post.html
@@ -0,0 +1,272 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+ <meta charset="utf8">
+ <title>Test for the network actor (POST request)</title>
+ <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript;version=1.8" src="common.js"></script>
+ <!-- Any copyright is dedicated to the Public Domain.
+ - http://creativecommons.org/publicdomain/zero/1.0/ -->
+</head>
+<body>
+<p>Test for the network actor (POST request)</p>
+
+<iframe src="http://example.com/chrome/devtools/shared/webconsole/test/network_requests_iframe.html"></iframe>
+
+<script class="testbody" type="text/javascript;version=1.8">
+SimpleTest.waitForExplicitFinish();
+
+function startTest()
+{
+ removeEventListener("load", startTest);
+
+ attachConsoleToTab(["NetworkActivity"], onAttach);
+}
+
+function onAttach(aState, aResponse)
+{
+ info("test network POST request");
+
+ onNetworkEvent = onNetworkEvent.bind(null, aState);
+ aState.dbgClient.addListener("networkEvent", onNetworkEvent);
+ onNetworkEventUpdate = onNetworkEventUpdate.bind(null, aState);
+ aState.dbgClient.addListener("networkEventUpdate", onNetworkEventUpdate);
+
+ let iframe = document.querySelector("iframe").contentWindow;
+ iframe.wrappedJSObject.testXhrPost();
+}
+
+function onNetworkEvent(aState, aType, aPacket)
+{
+ is(aPacket.from, aState.actor, "network event actor");
+
+ info("checking the network event packet");
+
+ let netActor = aPacket.eventActor;
+
+ checkObject(netActor, {
+ actor: /[a-z]/,
+ startedDateTime: /^\d+\-\d+\-\d+T.+$/,
+ url: /data\.json/,
+ method: "POST",
+ });
+
+ aState.netActor = netActor.actor;
+
+ aState.dbgClient.removeListener("networkEvent", onNetworkEvent);
+}
+
+let updates = [];
+
+function onNetworkEventUpdate(aState, aType, aPacket)
+{
+ info("received networkEventUpdate " + aPacket.updateType);
+ is(aPacket.from, aState.netActor, "networkEventUpdate actor");
+
+ updates.push(aPacket.updateType);
+
+ let expectedPacket = null;
+
+ switch (aPacket.updateType) {
+ case "requestHeaders":
+ case "responseHeaders":
+ ok(aPacket.headers > 0, "headers > 0");
+ ok(aPacket.headersSize > 0, "headersSize > 0");
+ break;
+ case "requestCookies":
+ expectedPacket = {
+ cookies: 3,
+ };
+ break;
+ case "requestPostData":
+ ok(aPacket.dataSize > 0, "dataSize > 0");
+ ok(!aPacket.discardRequestBody, "discardRequestBody");
+ break;
+ case "responseStart":
+ expectedPacket = {
+ response: {
+ httpVersion: /^HTTP\/\d\.\d$/,
+ status: "200",
+ statusText: "OK",
+ headersSize: /^\d+$/,
+ discardResponseBody: false,
+ },
+ };
+ break;
+ case "securityInfo":
+ expectedPacket = {
+ state: "insecure",
+ };
+ break;
+ case "responseCookies":
+ expectedPacket = {
+ cookies: 0,
+ };
+ break;
+ case "responseContent":
+ expectedPacket = {
+ mimeType: "application/json",
+ contentSize: /^\d+$/,
+ discardResponseBody: false,
+ };
+ break;
+ case "eventTimings":
+ expectedPacket = {
+ totalTime: /^\d+$/,
+ };
+ break;
+ default:
+ ok(false, "unknown network event update type: " +
+ aPacket.updateType);
+ return;
+ }
+
+ if (expectedPacket) {
+ info("checking the packet content");
+ checkObject(aPacket, expectedPacket);
+ }
+
+ if (updates.indexOf("responseContent") > -1 &&
+ updates.indexOf("eventTimings") > -1) {
+ aState.dbgClient.removeListener("networkEventUpdate",
+ onNetworkEvent);
+
+ onRequestHeaders = onRequestHeaders.bind(null, aState);
+ aState.client.getRequestHeaders(aState.netActor,
+ onRequestHeaders);
+ }
+}
+
+function onRequestHeaders(aState, aResponse)
+{
+ info("checking request headers");
+
+ ok(aResponse.headers.length > 0, "request headers > 0");
+ ok(aResponse.headersSize > 0, "request headersSize > 0");
+ ok(!!aResponse.rawHeaders.length, "request rawHeaders available");
+
+ checkHeadersOrCookies(aResponse.headers, {
+ Referer: /network_requests_iframe\.html/,
+ Cookie: /bug768096/,
+ });
+
+ checkRawHeaders(aResponse.rawHeaders, {
+ Referer: /network_requests_iframe\.html/,
+ Cookie: /bug768096/,
+ });
+
+ onRequestCookies = onRequestCookies.bind(null, aState);
+ aState.client.getRequestCookies(aState.netActor,
+ onRequestCookies);
+}
+
+function onRequestCookies(aState, aResponse)
+{
+ info("checking request cookies");
+
+ is(aResponse.cookies.length, 3, "request cookies length");
+
+ checkHeadersOrCookies(aResponse.cookies, {
+ foobar: "fooval",
+ omgfoo: "bug768096",
+ badcookie: "bug826798=st3fan",
+ });
+
+ onRequestPostData = onRequestPostData.bind(null, aState);
+ aState.client.getRequestPostData(aState.netActor,
+ onRequestPostData);
+}
+
+function onRequestPostData(aState, aResponse)
+{
+ info("checking request POST data");
+
+ checkObject(aResponse, {
+ postData: {
+ text: /^Hello world! foobaz barr.+foobaz barr$/,
+ },
+ postDataDiscarded: false,
+ });
+
+ is(aResponse.postData.text.length, 552, "postData text length");
+
+ onResponseHeaders = onResponseHeaders.bind(null, aState);
+ aState.client.getResponseHeaders(aState.netActor,
+ onResponseHeaders);
+}
+
+function onResponseHeaders(aState, aResponse)
+{
+ info("checking response headers");
+
+ ok(aResponse.headers.length > 0, "response headers > 0");
+ ok(aResponse.headersSize > 0, "response headersSize > 0");
+ ok(!!aResponse.rawHeaders, "response rawHeaders available");
+
+ checkHeadersOrCookies(aResponse.headers, {
+ "Content-Type": /^application\/(json|octet-stream)$/,
+ "Content-Length": /^\d+$/,
+ });
+
+ checkRawHeaders(aResponse.rawHeaders, {
+ "Content-Type": /^application\/(json|octet-stream)$/,
+ "Content-Length": /^\d+$/,
+ });
+
+ onResponseCookies = onResponseCookies.bind(null, aState);
+ aState.client.getResponseCookies(aState.netActor,
+ onResponseCookies);
+}
+
+function onResponseCookies(aState, aResponse)
+{
+ info("checking response cookies");
+
+ is(aResponse.cookies.length, 0, "response cookies length");
+
+ onResponseContent = onResponseContent.bind(null, aState);
+ aState.client.getResponseContent(aState.netActor,
+ onResponseContent);
+}
+
+function onResponseContent(aState, aResponse)
+{
+ info("checking response content");
+
+ checkObject(aResponse, {
+ content: {
+ text: /"test JSON data"/,
+ },
+ contentDiscarded: false,
+ });
+
+ onEventTimings = onEventTimings.bind(null, aState);
+ aState.client.getEventTimings(aState.netActor,
+ onEventTimings);
+}
+
+function onEventTimings(aState, aResponse)
+{
+ info("checking event timings");
+
+ checkObject(aResponse, {
+ timings: {
+ blocked: /^-1|\d+$/,
+ dns: /^-1|\d+$/,
+ connect: /^-1|\d+$/,
+ send: /^-1|\d+$/,
+ wait: /^-1|\d+$/,
+ receive: /^-1|\d+$/,
+ },
+ totalTime: /^\d+$/,
+ });
+
+ closeDebugger(aState, function() {
+ SimpleTest.finish();
+ });
+}
+
+addEventListener("load", startTest);
+</script>
+</body>
+</html>