services/sync/tests/unit/test_password_tracker.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

     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 });

mercurial