summaryrefslogtreecommitdiffstats
path: root/devtools/shared/webconsole/test/browser/browser_network_longstring.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/webconsole/test/browser/browser_network_longstring.js')
-rw-r--r--devtools/shared/webconsole/test/browser/browser_network_longstring.js203
1 files changed, 203 insertions, 0 deletions
diff --git a/devtools/shared/webconsole/test/browser/browser_network_longstring.js b/devtools/shared/webconsole/test/browser/browser_network_longstring.js
new file mode 100644
index 0000000000..6cb1850848
--- /dev/null
+++ b/devtools/shared/webconsole/test/browser/browser_network_longstring.js
@@ -0,0 +1,203 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test that the network actor uses the LongStringActor
+
+const {
+ DevToolsServer,
+} = require("resource://devtools/server/devtools-server.js");
+const LONG_STRING_LENGTH = 400;
+const LONG_STRING_INITIAL_LENGTH = 400;
+let ORIGINAL_LONG_STRING_LENGTH, ORIGINAL_LONG_STRING_INITIAL_LENGTH;
+
+add_task(async function () {
+ const tab = await addTab(URL_ROOT + "network_requests_iframe.html");
+
+ const commands = await CommandsFactory.forTab(tab);
+ await commands.targetCommand.startListening();
+
+ // Override the default long string settings to lower values.
+ // This is done from the parent process's DevToolsServer as the LongString
+ // actor is being created from the parent process as network requests are
+ // watched from the parent process.
+ ORIGINAL_LONG_STRING_LENGTH = DevToolsServer.LONG_STRING_LENGTH;
+ ORIGINAL_LONG_STRING_INITIAL_LENGTH =
+ DevToolsServer.LONG_STRING_INITIAL_LENGTH;
+
+ DevToolsServer.LONG_STRING_LENGTH = LONG_STRING_LENGTH;
+ DevToolsServer.LONG_STRING_INITIAL_LENGTH = LONG_STRING_INITIAL_LENGTH;
+
+ info("test network POST request");
+ const networkResource = await new Promise(resolve => {
+ commands.resourceCommand
+ .watchResources([commands.resourceCommand.TYPES.NETWORK_EVENT], {
+ onAvailable: () => {},
+ onUpdated: resourceUpdate => {
+ resolve(resourceUpdate[0].resource);
+ },
+ })
+ .then(() => {
+ // Spawn the network request after we started watching
+ SpecialPowers.spawn(gBrowser.selectedBrowser, [], async function () {
+ content.wrappedJSObject.testXhrPost();
+ });
+ });
+ });
+
+ const netActor = networkResource.actor;
+ ok(netActor, "We have a netActor:" + netActor);
+
+ const { client } = commands;
+ const requestHeaders = await client.request({
+ to: netActor,
+ type: "getRequestHeaders",
+ });
+ assertRequestHeaders(requestHeaders);
+ const requestCookies = await client.request({
+ to: netActor,
+ type: "getRequestCookies",
+ });
+ assertRequestCookies(requestCookies);
+ const requestPostData = await client.request({
+ to: netActor,
+ type: "getRequestPostData",
+ });
+ assertRequestPostData(requestPostData);
+ const responseHeaders = await client.request({
+ to: netActor,
+ type: "getResponseHeaders",
+ });
+ assertResponseHeaders(responseHeaders);
+ const responseCookies = await client.request({
+ to: netActor,
+ type: "getResponseCookies",
+ });
+ assertResponseCookies(responseCookies);
+ const responseContent = await client.request({
+ to: netActor,
+ type: "getResponseContent",
+ });
+ assertResponseContent(responseContent);
+ const eventTimings = await client.request({
+ to: netActor,
+ type: "getEventTimings",
+ });
+ assertEventTimings(eventTimings);
+
+ await commands.destroy();
+
+ DevToolsServer.LONG_STRING_LENGTH = ORIGINAL_LONG_STRING_LENGTH;
+ DevToolsServer.LONG_STRING_INITIAL_LENGTH =
+ ORIGINAL_LONG_STRING_INITIAL_LENGTH;
+});
+
+function assertRequestHeaders(response) {
+ info("checking request headers");
+
+ ok(!!response.headers.length, "request headers > 0");
+ Assert.greater(response.headersSize, 0, "request headersSize > 0");
+
+ checkHeadersOrCookies(response.headers, {
+ Referer: /network_requests_iframe\.html/,
+ Cookie: /bug768096/,
+ });
+}
+
+function assertRequestCookies(response) {
+ info("checking request cookies");
+
+ is(response.cookies.length, 3, "request cookies length");
+
+ checkHeadersOrCookies(response.cookies, {
+ foobar: "fooval",
+ omgfoo: "bug768096",
+ badcookie: "bug826798=st3fan",
+ });
+}
+
+function assertRequestPostData(response) {
+ info("checking request POST data");
+
+ checkObject(response, {
+ postData: {
+ text: {
+ type: "longString",
+ initial: /^Hello world! foobaz barr.+foobaz barrfo$/,
+ length: 563,
+ actor: /[a-z]/,
+ },
+ },
+ postDataDiscarded: false,
+ });
+
+ is(
+ response.postData.text.initial.length,
+ LONG_STRING_INITIAL_LENGTH,
+ "postData text initial length"
+ );
+}
+
+function assertResponseHeaders(response) {
+ info("checking response headers");
+
+ ok(!!response.headers.length, "response headers > 0");
+ Assert.greater(response.headersSize, 0, "response headersSize > 0");
+
+ checkHeadersOrCookies(response.headers, {
+ "content-type": /^application\/(json|octet-stream)$/,
+ "content-length": /^\d+$/,
+ "x-very-short": "hello world",
+ "x-very-long": {
+ type: "longString",
+ length: 521,
+ initial: /^Lorem ipsum.+\. Donec vitae d$/,
+ actor: /[a-z]/,
+ },
+ });
+}
+
+function assertResponseCookies(response) {
+ info("checking response cookies");
+
+ is(response.cookies.length, 0, "response cookies length");
+}
+
+function assertResponseContent(response) {
+ info("checking response content");
+
+ checkObject(response, {
+ content: {
+ text: {
+ type: "longString",
+ initial: /^\{ id: "test JSON data"(.|\r|\n)+ barfoo ba$/g,
+ length: 1070,
+ actor: /[a-z]/,
+ },
+ },
+ contentDiscarded: false,
+ });
+
+ is(
+ response.content.text.initial.length,
+ LONG_STRING_INITIAL_LENGTH,
+ "content initial length"
+ );
+}
+
+function assertEventTimings(response) {
+ info("checking event timings");
+
+ checkObject(response, {
+ timings: {
+ blocked: /^-1|\d+$/,
+ dns: /^-1|\d+$/,
+ connect: /^-1|\d+$/,
+ send: /^-1|\d+$/,
+ wait: /^-1|\d+$/,
+ receive: /^-1|\d+$/,
+ },
+ totalTime: /^\d+$/,
+ });
+}