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

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

mercurial