86 lines
2.2 KiB
JavaScript
86 lines
2.2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const TYPE_CA = 1;
|
|
const TYPE_USER = 2;
|
|
const TYPE_EMAIL = 4;
|
|
const TYPE_SERVER = 8;
|
|
|
|
add_task(async function test_dbItemDisplayed() {
|
|
await BrowserTestUtils.openNewForegroundTab(gBrowser, () => {
|
|
gBrowser.selectedTab = BrowserTestUtils.addTab(
|
|
gBrowser,
|
|
"about:certificate"
|
|
);
|
|
});
|
|
|
|
let categories = [
|
|
{
|
|
type: TYPE_CA,
|
|
tabName: "Authorities",
|
|
id: "ca",
|
|
},
|
|
{
|
|
type: TYPE_USER,
|
|
tabName: "Your Certificates",
|
|
id: "mine",
|
|
},
|
|
{
|
|
type: TYPE_EMAIL,
|
|
tabName: "People",
|
|
id: "people",
|
|
},
|
|
{
|
|
type: TYPE_SERVER,
|
|
tabName: "Servers",
|
|
id: "servers",
|
|
},
|
|
];
|
|
|
|
let certdb = Cc["@mozilla.org/security/x509certdb;1"].getService(
|
|
Ci.nsIX509CertDB
|
|
);
|
|
Assert.ok(certdb, "certdb not null");
|
|
let certcache = certdb.getCerts();
|
|
Assert.ok(certcache, "certcache not null");
|
|
|
|
for (let cert of certcache) {
|
|
let category = categories.find(({ type }) => type & cert.certType);
|
|
|
|
await SpecialPowers.spawn(
|
|
gBrowser.selectedBrowser,
|
|
[cert.displayName, category],
|
|
async function (displayName, category) {
|
|
let aboutCertificateSection = await ContentTaskUtils.waitForCondition(
|
|
() => {
|
|
return content.document.querySelector("about-certificate-section");
|
|
},
|
|
"Found aboutCertificateSection."
|
|
);
|
|
|
|
let tab = aboutCertificateSection.shadowRoot.querySelector(
|
|
`.certificate-tabs #certificate-viewer-tab-${category.id}`
|
|
);
|
|
Assert.ok(tab, `${category.tabName} tab should exist.`);
|
|
tab.click();
|
|
|
|
let certificateItems = aboutCertificateSection.shadowRoot.querySelector(
|
|
`.info-groups #certificate-viewer-tab-${category.id}`
|
|
);
|
|
|
|
let listItems =
|
|
certificateItems.shadowRoot.querySelectorAll("list-item");
|
|
|
|
let item = Array.from(listItems).find(
|
|
i =>
|
|
i.shadowRoot.querySelector(".item-name").textContent == displayName
|
|
);
|
|
Assert.ok(item, `${displayName} should be listed`);
|
|
}
|
|
);
|
|
}
|
|
|
|
gBrowser.removeCurrentTab(); // closes about:certificate
|
|
});
|