108 lines
3.1 KiB
JavaScript
108 lines
3.1 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
"use strict";
|
|
|
|
async function checkServerCertificates(win, expectedValues = []) {
|
|
await TestUtils.waitForCondition(
|
|
() => {
|
|
return (
|
|
win.document.getElementById("serverList").itemChildren.length ==
|
|
expectedValues.length
|
|
);
|
|
},
|
|
`Expected to have ${expectedValues.length} but got ${win.document.getElementById("serverList").itemChildren.length}`
|
|
);
|
|
await new Promise(win.requestAnimationFrame);
|
|
|
|
let labels = win.document
|
|
.getElementById("serverList")
|
|
.querySelectorAll("label");
|
|
|
|
// The strings we will get from the DOM are localized with Fluent.
|
|
// This will wait until the translation is applied.
|
|
if (expectedValues.length) {
|
|
await BrowserTestUtils.waitForCondition(
|
|
() => labels[1].value || !!labels[1].textContent.length,
|
|
"At least one label is populated"
|
|
);
|
|
}
|
|
|
|
expectedValues.forEach((item, i) => {
|
|
let hostPort = labels[i * 3].value;
|
|
let fingerprint = labels[i * 3 + 1].value || labels[i * 3 + 1].textContent;
|
|
|
|
Assert.equal(
|
|
hostPort,
|
|
item.hostPort,
|
|
`Expected override to be ${item.hostPort} but got ${hostPort}`
|
|
);
|
|
|
|
Assert.equal(
|
|
fingerprint,
|
|
item.fingerprint,
|
|
`Expected override to have field ${item.fingerprint}`
|
|
);
|
|
});
|
|
}
|
|
|
|
async function deleteOverride(win, expectedLength) {
|
|
win.document.getElementById("serverList").selectedIndex = 0;
|
|
await TestUtils.waitForCondition(() => {
|
|
return (
|
|
win.document.getElementById("serverList").itemChildren.length ==
|
|
expectedLength
|
|
);
|
|
});
|
|
let newWinPromise = BrowserTestUtils.domWindowOpenedAndLoaded();
|
|
// Since the .click() blocks we need to dispatch it to the main thread avoid that.
|
|
Services.tm.dispatchToMainThread(() =>
|
|
win.document.getElementById("websites_deleteButton").click()
|
|
);
|
|
let newWin = await newWinPromise;
|
|
newWin.document.getElementById("deleteCertificate").acceptDialog();
|
|
Assert.equal(
|
|
win.document.getElementById("serverList").selectedIndex,
|
|
0,
|
|
"After deletion we expect the selectedItem to be reset."
|
|
);
|
|
}
|
|
|
|
add_task(async function test_cert_manager_server_tab() {
|
|
let win = await openCertManager();
|
|
|
|
await checkServerCertificates(win);
|
|
|
|
win.document.getElementById("certmanager").acceptDialog();
|
|
await BrowserTestUtils.windowClosed(win);
|
|
|
|
let cert = await readCertificate("md5-ee.pem", ",,");
|
|
let certOverrideService = Cc[
|
|
"@mozilla.org/security/certoverride;1"
|
|
].getService(Ci.nsICertOverrideService);
|
|
certOverrideService.rememberValidityOverride(
|
|
"example.com",
|
|
443,
|
|
{},
|
|
cert,
|
|
false
|
|
);
|
|
|
|
win = await openCertManager();
|
|
|
|
await checkServerCertificates(win, [
|
|
{
|
|
hostPort: "example.com:443",
|
|
fingerprint: cert.sha256Fingerprint,
|
|
},
|
|
]);
|
|
|
|
await deleteOverride(win, 1);
|
|
|
|
await checkServerCertificates(win, []);
|
|
|
|
win.document.getElementById("certmanager").acceptDialog();
|
|
await BrowserTestUtils.windowClosed(win);
|
|
|
|
certOverrideService.clearAllOverrides();
|
|
});
|