diff options
Diffstat (limited to 'browser/base/content/test/siteIdentity/browser_getSecurityInfo.js')
-rw-r--r-- | browser/base/content/test/siteIdentity/browser_getSecurityInfo.js | 77 |
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" + ); + }); +}); |