1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/manager/ssl/tests/mochitest/bugs/test_bug413909.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,127 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<head> 1.7 + <title>Test bug 413909</title> 1.8 + <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 1.9 + <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" /> 1.10 +</head> 1.11 +<body onload="onWindowLoad()"> 1.12 + 1.13 +<script class="testbody" type="text/javascript"> 1.14 + 1.15 +var certOverrideService = Components.classes["@mozilla.org/security/certoverride;1"] 1.16 + .getService(Components.interfaces.nsICertOverrideService); 1.17 +var cert = null; 1.18 +var certListener = null; 1.19 + 1.20 +SimpleTest.waitForExplicitFinish(); 1.21 + 1.22 +function badCertListener() 1.23 +{ 1.24 +} 1.25 + 1.26 +badCertListener.prototype = { 1.27 + exceptionAdded: false, 1.28 + 1.29 + getInterface: function (aIID) { 1.30 + return this.QueryInterface(aIID); 1.31 + }, 1.32 + 1.33 + QueryInterface: function(aIID) { 1.34 + if (aIID.equals(Components.interfaces.nsIBadCertListener2) || 1.35 + aIID.equals(Components.interfaces.nsIInterfaceRequestor) || 1.36 + aIID.equals(Components.interfaces.nsISupports)) 1.37 + return this; 1.38 + 1.39 + throw Components.results.NS_ERROR_NO_INTERFACE; 1.40 + }, 1.41 + 1.42 + notifyCertProblem: function MSR_notifyCertProblem(socketInfo, sslStatus, targetHost) { 1.43 + cert = sslStatus.QueryInterface(Components.interfaces.nsISSLStatus) 1.44 + .serverCert; 1.45 + 1.46 + certOverrideService.rememberValidityOverride( 1.47 + "bug413909.xn--hxajbheg2az3al.xn--jxalpdlp", 1.48 + -1, 1.49 + cert, 1.50 + certOverrideService.ERROR_UNTRUSTED, 1.51 + false); 1.52 + 1.53 + this.exceptionAdded = true; 1.54 + return true; 1.55 + } 1.56 +} 1.57 + 1.58 +function apiTest(expected) 1.59 +{ 1.60 + var has; 1.61 + var bits = {}, temp = {}; 1.62 + 1.63 + has = certOverrideService.hasMatchingOverride( 1.64 + "bug413909.xn--hxajbheg2az3al.xn--jxalpdlp", 1.65 + -1, cert, bits, temp); 1.66 + is(has, expected, "hasMatchingOverride "+expected+" for default port value"); 1.67 + 1.68 + has = certOverrideService.hasMatchingOverride( 1.69 + "bug413909.xn--hxajbheg2az3al.xn--jxalpdlp", 1.70 + 443, cert, bits, temp); 1.71 + is(has, expected, "hasMatchingOverride "+expected+" for explicit port value"); 1.72 + 1.73 + has = certOverrideService.hasMatchingOverride( 1.74 + "bug413909.xn--hxajbheg2az3al.xn--jxalpdlp", 1.75 + 563, cert, bits, temp); 1.76 + ok(!has, "hasMatchingOverride false for invalid port value"); 1.77 + 1.78 + has = certOverrideService.hasMatchingOverride( 1.79 + window.frame1.location.hostname, 1.80 + -1, cert, bits, temp); 1.81 + ok(!has, "hasMatchingOverride false for default port value and non-ascii host"); 1.82 + 1.83 + has = certOverrideService.hasMatchingOverride( 1.84 + window.frame1.location.hostname, 1.85 + 443, cert, bits, temp); 1.86 + ok(!has, "hasMatchingOverride false for explicit port value and non-ascii host"); 1.87 + 1.88 + has = certOverrideService.hasMatchingOverride( 1.89 + window.frame1.location.hostname, 1.90 + 563, cert, bits, temp); 1.91 + ok(!has, "hasMatchingOverride false for invalid port value and non-ascii host"); 1.92 +} 1.93 + 1.94 +function onFrameLoad() 1.95 +{ 1.96 + ok(certListener.exceptionAdded, "Secure page loaded after exception was added and not sooner"); 1.97 + if (!certListener.exceptionAdded) 1.98 + return; 1.99 + 1.100 + apiTest(true); 1.101 + certOverrideService.clearValidityOverride( 1.102 + "bug413909.xn--hxajbheg2az3al.xn--jxalpdlp", -1); 1.103 + apiTest(false); 1.104 + 1.105 + SimpleTest.finish(); 1.106 +} 1.107 + 1.108 +function onWindowLoad() 1.109 +{ 1.110 + var req = new XMLHttpRequest(); 1.111 + try 1.112 + { 1.113 + certListener = new badCertListener(); 1.114 + 1.115 + req.open("GET", "https://bug413909.xn--hxajbheg2az3al.xn--jxalpdlp/", false); 1.116 + req.channel.notificationCallbacks = certListener; 1.117 + req.send(null); 1.118 + } 1.119 + catch(ex) 1.120 + { 1.121 + // ignore 1.122 + } 1.123 + 1.124 + window.frame1.location.reload(); 1.125 +} 1.126 + 1.127 +</script> 1.128 +<iframe name="frame1" src="https://bug413909.xn--hxajbheg2az3al.xn--jxalpdlp/" onload="onFrameLoad()"></iframe> 1.129 +</body> 1.130 +</html>