2
* Test suite for storage-Legacy.js -- various bug fixes.
4
* This test interfaces directly with the legacy login storage module,
5
* bypassing the normal login manager usage.
15
/* ========== 0 ========== */
17
var testdesc = "Initial connection to storage module"
19
var storage = Cc["@mozilla.org/login-manager/storage/legacy;1"].
20
createInstance(Ci.nsILoginManagerStorage);
22
throw "Couldn't create storage instance.";
25
/* ========== 1 ========== */
27
var testdesc = "Create nsILoginInfo instances for testing with"
29
var dummyuser1 = Cc["@mozilla.org/login-manager/loginInfo;1"].
30
createInstance(Ci.nsILoginInfo);
31
var dummyuser2 = Cc["@mozilla.org/login-manager/loginInfo;1"].
32
createInstance(Ci.nsILoginInfo);
33
var dummyuser3 = Cc["@mozilla.org/login-manager/loginInfo;1"].
34
createInstance(Ci.nsILoginInfo);
36
dummyuser1.init("http://dummyhost.mozilla.org", "", null,
37
"testuser1", "testpass1", "put_user_here", "put_pw_here");
39
dummyuser2.init("http://dummyhost2.mozilla.org", "", null,
40
"testuser2", "testpass2", "put_user2_here", "put_pw2_here");
42
dummyuser3.init("http://dummyhost2.mozilla.org", "", null,
43
"testuser3", "testpass3", "put_user3_here", "put_pw3_here");
48
* ---------------------- Bug 380961 ----------------------
49
* Need to support decoding the mime64-obscured format still
54
/* ========== 2 ========== */
57
testdesc = "checking import of mime64-obscured entries"
58
LoginTest.initStorage(storage, INDIR, "signons-380961-1.txt",
59
OUTDIR, "output-380961-1.txt");
60
LoginTest.checkStorageData(storage, [], [dummyuser1]);
62
testdesc = "[flush and reload for verification]"
63
LoginTest.initStorage(storage, OUTDIR, "output-380961-1.txt");
64
LoginTest.checkStorageData(storage, [], [dummyuser1]);
66
/* ========== 3 ========== */
69
testdesc = "testing import of multiple mime-64 entries for a host"
70
LoginTest.initStorage(storage, INDIR, "signons-380961-2.txt",
71
OUTDIR, "output-380961-2.txt");
72
LoginTest.checkStorageData(storage, [], [dummyuser2, dummyuser3]);
74
testdesc = "[flush and reload for verification]"
75
LoginTest.initStorage(storage, OUTDIR, "output-380961-2.txt");
76
LoginTest.checkStorageData(storage, [], [dummyuser2, dummyuser3]);
78
/* ========== 4 ========== */
81
testdesc = "testing import of mixed encrypted and mime-64 entries."
82
LoginTest.initStorage(storage, INDIR, "signons-380961-3.txt",
83
OUTDIR, "output-380961-3.txt");
84
LoginTest.checkStorageData(storage, [], [dummyuser1, dummyuser2, dummyuser3]);
86
testdesc = "[flush and reload for verification]"
87
LoginTest.initStorage(storage, OUTDIR, "output-380961-3.txt");
88
LoginTest.checkStorageData(storage, [], [dummyuser1, dummyuser2, dummyuser3]);
92
* ---------------------- Bug 381262 ----------------------
93
* The SecretDecoderRing can't handle UCS2, failure to
94
* convert to UTF8 garbles the result.
96
* Note: dump()ing to the console on OS X (at least) outputs
97
* garbage, whereas the "bad" UCS2 looks ok!
100
/* ========== 5 ========== */
103
testdesc = "initializing login with non-ASCII data."
104
var dummyuser4 = Cc["@mozilla.org/login-manager/loginInfo;1"].
105
createInstance(Ci.nsILoginInfo);
107
dummyuser4.hostname = "https://site.org";
108
dummyuser4.username = String.fromCharCode(
109
355, 277, 349, 357, 533, 537, 101, 345, 185);
110
// "testuser1" using similar-looking glyphs
111
dummyuser4.usernameField = "username";
112
dummyuser4.password = "testpa" + String.fromCharCode(223) + "1";
113
// "ss" replaced with German eszett.
114
dummyuser4.passwordField = "password";
115
dummyuser4.formSubmitURL = "https://site.org";
116
dummyuser4.httpRealm = null;
119
/* ========== 6 ========== */
122
testdesc = "testing import of non-ascii username and password."
123
LoginTest.initStorage(storage, INDIR, "signons-381262.txt",
124
OUTDIR, "output-381262-1.txt");
125
var logins = storage.getAllLogins({});
126
LoginTest.checkStorageData(storage, [], [dummyuser4]);
128
testdesc = "[flush and reload for verification]"
129
LoginTest.initStorage(storage, OUTDIR, "output-381262-1.txt");
130
LoginTest.checkStorageData(storage, [], [dummyuser4]);
133
/* ========== 7 ========== */
136
testdesc = "testing storage of non-ascii username and password."
137
LoginTest.initStorage(storage, INDIR, "signons-empty.txt",
138
OUTDIR, "output-381262-2.txt");
139
LoginTest.checkStorageData(storage, [], []);
140
storage.addLogin(dummyuser4);
141
LoginTest.checkStorageData(storage, [], [dummyuser4]);
143
testdesc = "[flush and reload for verification]"
144
LoginTest.initStorage(storage, OUTDIR, "output-381262-2.txt");
145
logins = storage.getAllLogins({});
146
LoginTest.checkStorageData(storage, [], [dummyuser4]);
150
* ---------------------- Bug 400751 ----------------------
151
* Migrating from existing mime64 encoded format causes
152
* errors in storage legacy's code
156
/* ========== 8 ========== */
159
testdesc = "checking double reading of mime64-obscured entries";
160
LoginTest.initStorage(storage, INDIR, "signons-380961-1.txt");
161
LoginTest.checkStorageData(storage, [], [dummyuser1]);
163
testdesc = "checking double reading of mime64-obscured entries part 2";
164
LoginTest.checkStorageData(storage, [], [dummyuser1]);
166
/* ========== 9 ========== */
169
testdesc = "checking correct storage of mime64 converted entries";
170
LoginTest.initStorage(storage, INDIR, "signons-380961-1.txt",
171
OUTDIR, "output-400751-1.txt");
172
LoginTest.checkStorageData(storage, [], [dummyuser1]);
173
LoginTest.checkStorageData(storage, [], [dummyuser1]);
174
storage.addLogin(dummyuser2); // trigger a write
175
LoginTest.checkStorageData(storage, [], [dummyuser1, dummyuser2]);
177
testdesc = "[flush and reload for verification]";
178
LoginTest.initStorage(storage, OUTDIR, "output-400751-1.txt");
179
LoginTest.checkStorageData(storage, [], [dummyuser1, dummyuser2]);
182
throw ("FAILED in test #" + testnum + " -- " + testdesc + ": " + e);