diff options
Diffstat (limited to 'toolkit/components/passwordmgr/test/mochitest/test_prompt_promptAuth_proxy.html')
-rw-r--r-- | toolkit/components/passwordmgr/test/mochitest/test_prompt_promptAuth_proxy.html | 264 |
1 files changed, 0 insertions, 264 deletions
diff --git a/toolkit/components/passwordmgr/test/mochitest/test_prompt_promptAuth_proxy.html b/toolkit/components/passwordmgr/test/mochitest/test_prompt_promptAuth_proxy.html deleted file mode 100644 index 95dd4c7bc..000000000 --- a/toolkit/components/passwordmgr/test/mochitest/test_prompt_promptAuth_proxy.html +++ /dev/null @@ -1,264 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <meta charset="utf-8"> - <title>Test promptAuth proxy prompts</title> - <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> - <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script> - <script type="text/javascript" src="pwmgr_common.js"></script> - <script type="text/javascript" src="prompt_common.js"></script> - <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> -</head> -<body> -<p id="display"></p> - -<div id="content" style="display: none"> - <iframe id="iframe"></iframe> -</div> - -<pre id="test"> -<script class="testbody" type="text/javascript"> -var state, action; -var pwmgr; -var proxyLogin; -var isOk; -var mozproxy, proxiedHost = "http://mochi.test:8888"; -var proxyChannel; -var systemPrincipal = SpecialPowers.Services.scriptSecurityManager.getSystemPrincipal(); -var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); - -var prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch); - -var level = Ci.nsIAuthPrompt2.LEVEL_NONE; - -var proxyAuthinfo = { - username : "", - password : "", - domain : "", - - flags : Ci.nsIAuthInformation.AUTH_PROXY, - authenticationScheme : "basic", - realm : "" -}; - -// Force parent to not look for tab-modal prompts, as they're not used for auth prompts. -isTabModal = false; - -const Cc_promptFac = Cc["@mozilla.org/passwordmanager/authpromptfactory;1"]; -ok(Cc_promptFac != null, "Access Cc[@mozilla.org/passwordmanager/authpromptfactory;1]"); - -const Ci_promptFac = Ci.nsIPromptFactory; -ok(Ci_promptFac != null, "Access Ci.nsIPromptFactory"); - -const promptFac = Cc_promptFac.getService(Ci_promptFac); -ok(promptFac != null, "promptFac getService()"); - -var prompter2 = promptFac.getPrompt(window, Ci.nsIAuthPrompt2); - -function initLogins(pi) { - pwmgr = Cc["@mozilla.org/login-manager;1"]. - getService(Ci.nsILoginManager); - - mozproxy = "moz-proxy://" + SpecialPowers.wrap(pi).host + ":" + - SpecialPowers.wrap(pi).port; - - proxyLogin = Cc["@mozilla.org/login-manager/loginInfo;1"]. - createInstance(Ci.nsILoginInfo); - - proxyLogin.init(mozproxy, null, "Proxy Realm", - "proxuser", "proxpass", "", ""); - - pwmgr.addLogin(proxyLogin); -} - -var startupCompleteResolver; -var startupComplete = new Promise(resolve => startupCompleteResolver = resolve); - -function proxyChannelListener() { } -proxyChannelListener.prototype = { - onStartRequest: function(request, context) { - startupCompleteResolver(); - }, - onStopRequest: function(request, context, status) { } -}; - -var resolveCallback = SpecialPowers.wrapCallbackObject({ - QueryInterface : function (iid) { - const interfaces = [Ci.nsIProtocolProxyCallback, Ci.nsISupports]; - - if (!interfaces.some( function(v) { return iid.equals(v); } )) - throw SpecialPowers.Cr.NS_ERROR_NO_INTERFACE; - return this; - }, - - onProxyAvailable : function (req, uri, pi, status) { - initLogins(pi); - - // I'm cheating a bit here... We should probably do some magic foo to get - // something implementing nsIProxiedProtocolHandler and then call - // NewProxiedChannel(), so we have something that's definately a proxied - // channel. But Mochitests use a proxy for a number of hosts, so just - // requesting a normal channel will give us a channel that's proxied. - // The proxyChannel needs to move to at least on-modify-request to - // have valid ProxyInfo, but we use OnStartRequest during startup() - // for simplicity. - proxyChannel = ioService.newChannel2(proxiedHost, - null, - null, - null, // aLoadingNode - systemPrincipal, - null, // aTriggeringPrincipal - Ci.nsILoadInfo.SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL, - Ci.nsIContentPolicy.TYPE_OTHER); - proxyChannel.asyncOpen2(SpecialPowers.wrapCallbackObject(new proxyChannelListener())); - } -}); - -function startup() { - // Need to allow for arbitrary network servers defined in PAC instead of a hardcoded moz-proxy. - var ios = SpecialPowers.Cc["@mozilla.org/network/io-service;1"]. - getService(SpecialPowers.Ci.nsIIOService); - - var pps = SpecialPowers.Cc["@mozilla.org/network/protocol-proxy-service;1"].getService(); - - var channel = ios.newChannel2("http://example.com", - null, - null, - null, // aLoadingNode - systemPrincipal, - null, // aTriggeringPrincipal - Ci.nsILoadInfo.SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL, - Ci.nsIContentPolicy.TYPE_OTHER); - pps.asyncResolve(channel, 0, resolveCallback); -} - -startup(); - -add_task(function* setup() { - info("Waiting for startup to complete..."); - yield startupComplete; -}); - -add_task(function* test_noAutologin() { - // test proxy login (default = no autologin), make sure it prompts. - state = { - msg : "The proxy moz-proxy://127.0.0.1:8888 is requesting a username and password. The site says: “Proxy Realm”", - title : "Authentication Required", - textValue : "proxuser", - passValue : "proxpass", - iconClass : "authentication-icon question-icon", - titleHidden : true, - textHidden : false, - passHidden : false, - checkHidden : true, - checkMsg : "", - checked : false, - focused : "textField", - defButton : "button0", - }; - action = { - buttonClick : "ok", - }; - proxyAuthinfo.username = ""; - proxyAuthinfo.password = ""; - proxyAuthinfo.realm = "Proxy Realm"; - proxyAuthinfo.flags = Ci.nsIAuthInformation.AUTH_PROXY; - - var time1 = pwmgr.findLogins({}, mozproxy, null, "Proxy Realm")[0].QueryInterface(Ci.nsILoginMetaInfo).timeLastUsed; - promptDone = handlePrompt(state, action); - isOk = prompter2.promptAuth(proxyChannel, level, proxyAuthinfo); - yield promptDone; - var time2 = pwmgr.findLogins({}, mozproxy, null, "Proxy Realm")[0].QueryInterface(Ci.nsILoginMetaInfo).timeLastUsed; - - ok(isOk, "Checking dialog return value (accept)"); - isnot(time1, time2, "Checking that timeLastUsed was updated"); - is(proxyAuthinfo.username, "proxuser", "Checking returned username"); - is(proxyAuthinfo.password, "proxpass", "Checking returned password"); -}); - -add_task(function* test_autologin() { - // test proxy login (with autologin) - - // Enable the autologin pref. - prefs.setBoolPref("signon.autologin.proxy", true); - - proxyAuthinfo.username = ""; - proxyAuthinfo.password = ""; - proxyAuthinfo.realm = "Proxy Realm"; - proxyAuthinfo.flags = Ci.nsIAuthInformation.AUTH_PROXY; - - time1 = pwmgr.findLogins({}, mozproxy, null, "Proxy Realm")[0].QueryInterface(Ci.nsILoginMetaInfo).timeLastUsed; - isOk = prompter2.promptAuth(proxyChannel, level, proxyAuthinfo); - time2 = pwmgr.findLogins({}, mozproxy, null, "Proxy Realm")[0].QueryInterface(Ci.nsILoginMetaInfo).timeLastUsed; - - ok(isOk, "Checking dialog return value (accept)"); - isnot(time1, time2, "Checking that timeLastUsed was updated"); - is(proxyAuthinfo.username, "proxuser", "Checking returned username"); - is(proxyAuthinfo.password, "proxpass", "Checking returned password"); -}); - -add_task(function* test_autologin_incorrect() { - // test proxy login (with autologin), ensure it prompts after a failed auth. - state = { - msg : "The proxy moz-proxy://127.0.0.1:8888 is requesting a username and password. The site says: “Proxy Realm”", - title : "Authentication Required", - textValue : "proxuser", - passValue : "proxpass", - iconClass : "authentication-icon question-icon", - titleHidden : true, - textHidden : false, - passHidden : false, - checkHidden : true, - checkMsg : "", - checked : false, - focused : "textField", - defButton : "button0", - }; - action = { - buttonClick : "ok", - }; - - proxyAuthinfo.username = ""; - proxyAuthinfo.password = ""; - proxyAuthinfo.realm = "Proxy Realm"; - proxyAuthinfo.flags = (Ci.nsIAuthInformation.AUTH_PROXY | Ci.nsIAuthInformation.PREVIOUS_FAILED); - - time1 = pwmgr.findLogins({}, mozproxy, null, "Proxy Realm")[0].QueryInterface(Ci.nsILoginMetaInfo).timeLastUsed; - promptDone = handlePrompt(state, action); - isOk = prompter2.promptAuth(proxyChannel, level, proxyAuthinfo); - yield promptDone; - time2 = pwmgr.findLogins({}, mozproxy, null, "Proxy Realm")[0].QueryInterface(Ci.nsILoginMetaInfo).timeLastUsed; - - ok(isOk, "Checking dialog return value (accept)"); - isnot(time1, time2, "Checking that timeLastUsed was updated"); - is(proxyAuthinfo.username, "proxuser", "Checking returned username"); - is(proxyAuthinfo.password, "proxpass", "Checking returned password"); -}); - -add_task(function* test_autologin_private() { - // test proxy login (with autologin), ensure it prompts in Private Browsing mode. - state = { - msg : "the message", - title : "the title", - textValue : "proxuser", - passValue : "proxpass", - }; - action = { - buttonClick : "ok", - }; - - proxyAuthinfo.username = ""; - proxyAuthinfo.password = ""; - proxyAuthinfo.realm = "Proxy Realm"; - proxyAuthinfo.flags = Ci.nsIAuthInformation.AUTH_PROXY; - - prefs.clearUserPref("signon.autologin.proxy"); - - // XXX check for and kill popup notification?? - // XXX check for checkbox / checkstate on old prompts? - // XXX check NTLM domain stuff -}); -</script> -</pre> -</body> -</html> |