mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-22 02:25:05 +00:00
119 lines
3.7 KiB
JavaScript
119 lines
3.7 KiB
JavaScript
/* 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, debuggee, 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 tab = $("#security-tab");
|
|
let tabpanel = $("#security-tabpanel");
|
|
|
|
info("Performing a request to " + testcase.uri);
|
|
debuggee.performRequests(1, testcase.uri);
|
|
|
|
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(tab.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(tab.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(tab.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();
|
|
}
|
|
|
|
yield 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);
|
|
}
|
|
});
|