summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/siteIdentity/browser_getSecurityInfo.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/siteIdentity/browser_getSecurityInfo.js')
-rw-r--r--browser/base/content/test/siteIdentity/browser_getSecurityInfo.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/browser/base/content/test/siteIdentity/browser_getSecurityInfo.js b/browser/base/content/test/siteIdentity/browser_getSecurityInfo.js
new file mode 100644
index 0000000000..42a956844c
--- /dev/null
+++ b/browser/base/content/test/siteIdentity/browser_getSecurityInfo.js
@@ -0,0 +1,77 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+const MOZILLA_PKIX_ERROR_BASE = Ci.nsINSSErrorsService.MOZILLA_PKIX_ERROR_BASE;
+const MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT = MOZILLA_PKIX_ERROR_BASE + 14;
+
+const IFRAME_PAGE =
+ getRootDirectory(gTestPath).replace(
+ "chrome://mochitests/content",
+ "http://example.com"
+ ) + "dummy_iframe_page.html";
+
+// Tests the getSecurityInfo() function exposed on WindowGlobalParent.
+add_task(async function test() {
+ await BrowserTestUtils.withNewTab("about:blank", async function(browser) {
+ let loaded = BrowserTestUtils.waitForErrorPage(browser);
+ BrowserTestUtils.loadURI(browser, "https://self-signed.example.com");
+ await loaded;
+
+ let securityInfo = await browser.browsingContext.currentWindowGlobal.getSecurityInfo();
+ securityInfo.QueryInterface(Ci.nsITransportSecurityInfo);
+ ok(securityInfo, "Found some security info");
+ ok(securityInfo.failedCertChain, "Has a failed cert chain");
+ is(
+ securityInfo.errorCode,
+ MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT,
+ "Has the correct error code"
+ );
+ is(
+ securityInfo.serverCert.commonName,
+ "self-signed.example.com",
+ "Has the correct certificate"
+ );
+
+ loaded = BrowserTestUtils.browserLoaded(browser);
+ BrowserTestUtils.loadURI(browser, "http://example.com");
+ await loaded;
+
+ securityInfo = await browser.browsingContext.currentWindowGlobal.getSecurityInfo();
+ ok(!securityInfo, "Found no security info");
+
+ loaded = BrowserTestUtils.browserLoaded(browser);
+ BrowserTestUtils.loadURI(browser, "https://example.com");
+ await loaded;
+
+ securityInfo = await browser.browsingContext.currentWindowGlobal.getSecurityInfo();
+ securityInfo.QueryInterface(Ci.nsITransportSecurityInfo);
+ ok(securityInfo, "Found some security info");
+ ok(securityInfo.succeededCertChain, "Has a succeeded cert chain");
+ is(securityInfo.errorCode, 0, "Has no error code");
+ is(
+ securityInfo.serverCert.commonName,
+ "example.com",
+ "Has the correct certificate"
+ );
+
+ loaded = BrowserTestUtils.browserLoaded(browser);
+ BrowserTestUtils.loadURI(browser, IFRAME_PAGE);
+ await loaded;
+
+ // Get the info of the parent, which is HTTP.
+ securityInfo = await browser.browsingContext.currentWindowGlobal.getSecurityInfo();
+ ok(!securityInfo, "Found no security info");
+
+ // Get the info of the frame, which is HTTPS.
+ securityInfo = await browser.browsingContext.children[0].currentWindowGlobal.getSecurityInfo();
+ securityInfo.QueryInterface(Ci.nsITransportSecurityInfo);
+ ok(securityInfo, "Found some security info");
+ ok(securityInfo.succeededCertChain, "Has a succeeded cert chain");
+ is(securityInfo.errorCode, 0, "Has no error code");
+ is(
+ securityInfo.serverCert.commonName,
+ "example.com",
+ "Has the correct certificate"
+ );
+ });
+});