Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
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");
10 Service.engineManager.register(PasswordEngine);
11 let engine = Service.engineManager.get("passwords");
12 let store = engine._store;
13 let tracker = engine._tracker;
15 // Don't do asynchronous writes.
16 tracker.persistChangedIDs = false;
18 function run_test() {
19 initTestLogging("Trace");
20 run_next_test();
21 }
23 add_test(function test_tracking() {
24 let recordNum = 0;
26 _("Verify we've got an empty tracker to work with.");
27 do_check_empty(tracker.changedIDs);
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 }
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);
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);
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);
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);
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);
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 });
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);
90 try {
91 _("A store wipe should increment the score");
92 Svc.Obs.notify("weave:engine:start-tracking");
93 store.wipe();
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 });