toolkit/components/passwordmgr/test/browser/browser_passwordmgr_observers.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

michael@0 1 /* Any copyright is dedicated to the Public Domain.
michael@0 2 * http://creativecommons.org/publicdomain/zero/1.0/ */
michael@0 3
michael@0 4 function test() {
michael@0 5 waitForExplicitFinish();
michael@0 6
michael@0 7 const LOGIN_HOST = "http://example.com";
michael@0 8 const LOGIN_COUNT = 5;
michael@0 9
michael@0 10 let nsLoginInfo = new Components.Constructor(
michael@0 11 "@mozilla.org/login-manager/loginInfo;1", Ci.nsILoginInfo, "init");
michael@0 12 let pmDialog = window.openDialog(
michael@0 13 "chrome://passwordmgr/content/passwordManager.xul",
michael@0 14 "Toolkit:PasswordManager", "");
michael@0 15 let pmexDialog = window.openDialog(
michael@0 16 "chrome://passwordmgr/content/passwordManagerExceptions.xul",
michael@0 17 "Toolkit:PasswordManagerExceptions", "");
michael@0 18 let logins = [];
michael@0 19 let loginCounter = 0;
michael@0 20 let loginOrder = null;
michael@0 21 let modifiedLogin;
michael@0 22 let testNumber = 0;
michael@0 23 let testObserver = {
michael@0 24 observe: function (subject, topic, data) {
michael@0 25 if (topic == "passwordmgr-dialog-updated") {
michael@0 26 switch (testNumber) {
michael@0 27 case 1:
michael@0 28 case 2:
michael@0 29 case 3:
michael@0 30 case 4:
michael@0 31 case 5:
michael@0 32 is(countLogins(), loginCounter, "Verify login added");
michael@0 33 ok(getLoginOrder().startsWith(loginOrder), "Verify login order");
michael@0 34 runNextTest();
michael@0 35 break;
michael@0 36 case 6:
michael@0 37 is(countLogins(), loginCounter, "Verify login count");
michael@0 38 is(getLoginOrder(), loginOrder, "Verify login order");
michael@0 39 is(getLoginPassword(), "newpassword0", "Verify login modified");
michael@0 40 runNextTest();
michael@0 41 break;
michael@0 42 case 7:
michael@0 43 is(countLogins(), loginCounter, "Verify login removed");
michael@0 44 ok(loginOrder.endsWith(getLoginOrder()), "Verify login order");
michael@0 45 runNextTest();
michael@0 46 break;
michael@0 47 case 8:
michael@0 48 is(countLogins(), 0, "Verify all logins removed");
michael@0 49 runNextTest();
michael@0 50 break;
michael@0 51 case 9:
michael@0 52 is(countDisabledHosts(), 1, "Verify disabled host added");
michael@0 53 runNextTest();
michael@0 54 break;
michael@0 55 case 10:
michael@0 56 is(countDisabledHosts(), 0, "Verify disabled host removed");
michael@0 57 runNextTest();
michael@0 58 break;
michael@0 59 }
michael@0 60 }
michael@0 61 }
michael@0 62 };
michael@0 63
michael@0 64 SimpleTest.waitForFocus(startTest, pmDialog);
michael@0 65
michael@0 66 function createLogins() {
michael@0 67 let login;
michael@0 68 for (let i = 0; i < LOGIN_COUNT; i++) {
michael@0 69 login = new nsLoginInfo(LOGIN_HOST + "?n=" + i, LOGIN_HOST + "?n=" + i,
michael@0 70 null, "user" + i, "password" + i, "u" + i, "p" + i);
michael@0 71 logins.push(login);
michael@0 72 }
michael@0 73 modifiedLogin = new nsLoginInfo(LOGIN_HOST + "?n=0", LOGIN_HOST + "?n=0",
michael@0 74 null, "user0", "newpassword0", "u0", "p0");
michael@0 75 is(logins.length, LOGIN_COUNT, "Verify logins created");
michael@0 76 }
michael@0 77
michael@0 78 function countDisabledHosts() {
michael@0 79 let doc = pmexDialog.document;
michael@0 80 let rejectsTree = doc.getElementById("rejectsTree");
michael@0 81 return rejectsTree.view.rowCount;
michael@0 82 }
michael@0 83
michael@0 84 function countLogins() {
michael@0 85 let doc = pmDialog.document;
michael@0 86 let signonsTree = doc.getElementById("signonsTree");
michael@0 87 return signonsTree.view.rowCount;
michael@0 88 }
michael@0 89
michael@0 90 function getLoginOrder() {
michael@0 91 let doc = pmDialog.document;
michael@0 92 let signonsTree = doc.getElementById("signonsTree");
michael@0 93 let column = signonsTree.columns[0]; // host column
michael@0 94 let order = [];
michael@0 95 for (let i = 0; i < signonsTree.view.rowCount; i++) {
michael@0 96 order.push(signonsTree.view.getCellText(i, column));
michael@0 97 }
michael@0 98 return order.join(',');
michael@0 99 }
michael@0 100
michael@0 101 function getLoginPassword() {
michael@0 102 let doc = pmDialog.document;
michael@0 103 let loginsTree = doc.getElementById("signonsTree");
michael@0 104 let column = loginsTree.columns[2]; // password column
michael@0 105 return loginsTree.view.getCellText(0, column);
michael@0 106 }
michael@0 107
michael@0 108 function startTest() {
michael@0 109 Services.obs.addObserver(
michael@0 110 testObserver, "passwordmgr-dialog-updated", false);
michael@0 111 is(countLogins(), 0, "Verify starts with 0 logins");
michael@0 112 createLogins();
michael@0 113 runNextTest();
michael@0 114 }
michael@0 115
michael@0 116 function runNextTest() {
michael@0 117 switch (++testNumber) {
michael@0 118 case 1: // add the logins
michael@0 119 for (let i = 0; i < logins.length; i++) {
michael@0 120 loginCounter++;
michael@0 121 loginOrder = getLoginOrder();
michael@0 122 Services.logins.addLogin(logins[i]);
michael@0 123 }
michael@0 124 break;
michael@0 125 case 6: // modify a login
michael@0 126 loginOrder = getLoginOrder();
michael@0 127 Services.logins.modifyLogin(logins[0], modifiedLogin);
michael@0 128 break;
michael@0 129 case 7: // remove a login
michael@0 130 loginCounter--;
michael@0 131 loginOrder = getLoginOrder();
michael@0 132 Services.logins.removeLogin(modifiedLogin);
michael@0 133 break;
michael@0 134 case 8: // remove all logins
michael@0 135 Services.logins.removeAllLogins();
michael@0 136 break;
michael@0 137 case 9: // save a disabled host
michael@0 138 pmDialog.close();
michael@0 139 SimpleTest.waitForFocus(function() {
michael@0 140 Services.logins.setLoginSavingEnabled(LOGIN_HOST, false);
michael@0 141 }, pmexDialog);
michael@0 142 break;
michael@0 143 case 10: // remove a disabled host
michael@0 144 Services.logins.setLoginSavingEnabled(LOGIN_HOST, true);
michael@0 145 break;
michael@0 146 case 11: // finish
michael@0 147 Services.obs.removeObserver(
michael@0 148 testObserver, "passwordmgr-dialog-updated", false);
michael@0 149 pmexDialog.close();
michael@0 150 finish();
michael@0 151 break;
michael@0 152 }
michael@0 153 }
michael@0 154 }

mercurial