services/sync/tests/unit/test_password_tracker.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:62011fcb0007
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 Cu.import("resource://services-sync/constants.js");
5 Cu.import("resource://services-sync/engines/passwords.js");
6 Cu.import("resource://services-sync/engines.js");
7 Cu.import("resource://services-sync/service.js");
8 Cu.import("resource://services-sync/util.js");
9
10 Service.engineManager.register(PasswordEngine);
11 let engine = Service.engineManager.get("passwords");
12 let store = engine._store;
13 let tracker = engine._tracker;
14
15 // Don't do asynchronous writes.
16 tracker.persistChangedIDs = false;
17
18 function run_test() {
19 initTestLogging("Trace");
20 run_next_test();
21 }
22
23 add_test(function test_tracking() {
24 let recordNum = 0;
25
26 _("Verify we've got an empty tracker to work with.");
27 do_check_empty(tracker.changedIDs);
28
29 function createPassword() {
30 _("RECORD NUM: " + recordNum);
31 let record = {id: "GUID" + recordNum,
32 hostname: "http://foo.bar.com",
33 formSubmitURL: "http://foo.bar.com/baz",
34 username: "john" + recordNum,
35 password: "smith",
36 usernameField: "username",
37 passwordField: "password"};
38 recordNum++;
39 let login = store._nsLoginInfoFromRecord(record);
40 Services.logins.addLogin(login);
41 }
42
43 try {
44 _("Create a password record. Won't show because we haven't started tracking yet");
45 createPassword();
46 do_check_empty(tracker.changedIDs);
47 do_check_eq(tracker.score, 0);
48
49 _("Tell the tracker to start tracking changes.");
50 Svc.Obs.notify("weave:engine:start-tracking");
51 createPassword();
52 do_check_attribute_count(tracker.changedIDs, 1);
53 do_check_eq(tracker.score, SCORE_INCREMENT_XLARGE);
54
55 _("Notifying twice won't do any harm.");
56 Svc.Obs.notify("weave:engine:start-tracking");
57 createPassword();
58 do_check_attribute_count(tracker.changedIDs, 2);
59 do_check_eq(tracker.score, SCORE_INCREMENT_XLARGE * 2);
60
61 _("Let's stop tracking again.");
62 tracker.clearChangedIDs();
63 tracker.resetScore();
64 Svc.Obs.notify("weave:engine:stop-tracking");
65 createPassword();
66 do_check_empty(tracker.changedIDs);
67 do_check_eq(tracker.score, 0);
68
69 _("Notifying twice won't do any harm.");
70 Svc.Obs.notify("weave:engine:stop-tracking");
71 createPassword();
72 do_check_empty(tracker.changedIDs);
73 do_check_eq(tracker.score, 0);
74
75 } finally {
76 _("Clean up.");
77 store.wipe();
78 tracker.clearChangedIDs();
79 tracker.resetScore();
80 Svc.Obs.notify("weave:engine:stop-tracking");
81 run_next_test();
82 }
83 });
84
85 add_test(function test_onWipe() {
86 _("Verify we've got an empty tracker to work with.");
87 do_check_empty(tracker.changedIDs);
88 do_check_eq(tracker.score, 0);
89
90 try {
91 _("A store wipe should increment the score");
92 Svc.Obs.notify("weave:engine:start-tracking");
93 store.wipe();
94
95 do_check_eq(tracker.score, SCORE_INCREMENT_XLARGE);
96 } finally {
97 tracker.resetScore();
98 Svc.Obs.notify("weave:engine:stop-tracking");
99 run_next_test();
100 }
101 });

mercurial