summaryrefslogtreecommitdiffstats
path: root/devtools/client/netmonitor/test/browser_net_security-tab-visibility.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /devtools/client/netmonitor/test/browser_net_security-tab-visibility.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/client/netmonitor/test/browser_net_security-tab-visibility.js')
-rw-r--r--devtools/client/netmonitor/test/browser_net_security-tab-visibility.js121
1 files changed, 121 insertions, 0 deletions
diff --git a/devtools/client/netmonitor/test/browser_net_security-tab-visibility.js b/devtools/client/netmonitor/test/browser_net_security-tab-visibility.js
new file mode 100644
index 000000000..b6685d7fe
--- /dev/null
+++ b/devtools/client/netmonitor/test/browser_net_security-tab-visibility.js
@@ -0,0 +1,121 @@
+/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+/**
+ * Test that security details tab is visible only when it should.
+ */
+
+add_task(function* () {
+ const TEST_DATA = [
+ {
+ desc: "http request",
+ uri: "http://example.com" + CORS_SJS_PATH,
+ visibleOnNewEvent: false,
+ visibleOnSecurityInfo: false,
+ visibleOnceComplete: false,
+ }, {
+ desc: "working https request",
+ uri: "https://example.com" + CORS_SJS_PATH,
+ visibleOnNewEvent: false,
+ visibleOnSecurityInfo: true,
+ visibleOnceComplete: true,
+ }, {
+ desc: "broken https request",
+ uri: "https://nocert.example.com",
+ isBroken: true,
+ visibleOnNewEvent: false,
+ visibleOnSecurityInfo: true,
+ visibleOnceComplete: true,
+ }
+ ];
+
+ let { tab, monitor } = yield initNetMonitor(CUSTOM_GET_URL);
+ let { $, EVENTS, NetMonitorView } = monitor.panelWin;
+ let { RequestsMenu } = NetMonitorView;
+ RequestsMenu.lazyUpdate = false;
+
+ for (let testcase of TEST_DATA) {
+ info("Testing Security tab visibility for " + testcase.desc);
+ let onNewItem = monitor.panelWin.once(EVENTS.NETWORK_EVENT);
+ let onSecurityInfo = monitor.panelWin.once(EVENTS.RECEIVED_SECURITY_INFO);
+ let onComplete = testcase.isBroken ?
+ waitForSecurityBrokenNetworkEvent() :
+ waitForNetworkEvents(monitor, 1);
+
+ let tabEl = $("#security-tab");
+ let tabpanel = $("#security-tabpanel");
+
+ info("Performing a request to " + testcase.uri);
+ yield ContentTask.spawn(tab.linkedBrowser, testcase.uri, function* (url) {
+ content.wrappedJSObject.performRequests(1, url);
+ });
+
+ info("Waiting for new network event.");
+ yield onNewItem;
+
+ info("Selecting the request.");
+ RequestsMenu.selectedIndex = 0;
+
+ is(RequestsMenu.selectedItem.attachment.securityState, undefined,
+ "Security state has not yet arrived.");
+ is(tabEl.hidden, !testcase.visibleOnNewEvent,
+ "Security tab is " +
+ (testcase.visibleOnNewEvent ? "visible" : "hidden") +
+ " after new request was added to the menu.");
+ is(tabpanel.hidden, false,
+ "#security-tabpanel is visible after new request was added to the menu.");
+
+ info("Waiting for security information to arrive.");
+ yield onSecurityInfo;
+
+ ok(RequestsMenu.selectedItem.attachment.securityState,
+ "Security state arrived.");
+ is(tabEl.hidden, !testcase.visibleOnSecurityInfo,
+ "Security tab is " +
+ (testcase.visibleOnSecurityInfo ? "visible" : "hidden") +
+ " after security information arrived.");
+ is(tabpanel.hidden, false,
+ "#security-tabpanel is visible after security information arrived.");
+
+ info("Waiting for request to complete.");
+ yield onComplete;
+
+ is(tabEl.hidden, !testcase.visibleOnceComplete,
+ "Security tab is " +
+ (testcase.visibleOnceComplete ? "visible" : "hidden") +
+ " after request has been completed.");
+ is(tabpanel.hidden, false,
+ "#security-tabpanel is visible after request is complete.");
+
+ info("Clearing requests.");
+ RequestsMenu.clear();
+ }
+
+ return teardown(monitor);
+
+ /**
+ * Returns a promise that's resolved once a request with security issues is
+ * completed.
+ */
+ function waitForSecurityBrokenNetworkEvent() {
+ let awaitedEvents = [
+ "UPDATING_REQUEST_HEADERS",
+ "RECEIVED_REQUEST_HEADERS",
+ "UPDATING_REQUEST_COOKIES",
+ "RECEIVED_REQUEST_COOKIES",
+ "STARTED_RECEIVING_RESPONSE",
+ "UPDATING_RESPONSE_CONTENT",
+ "RECEIVED_RESPONSE_CONTENT",
+ "UPDATING_EVENT_TIMINGS",
+ "RECEIVED_EVENT_TIMINGS",
+ ];
+
+ let promises = awaitedEvents.map((event) => {
+ return monitor.panelWin.once(EVENTS[event]);
+ });
+
+ return Promise.all(promises);
+ }
+});