services/sync/tests/unit/test_service_sync_401.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/policies.js");
     6 Cu.import("resource://services-sync/service.js");
     7 Cu.import("resource://services-sync/util.js");
     8 Cu.import("resource://testing-common/services/sync/utils.js");
    10 function login_handling(handler) {
    11   return function (request, response) {
    12     if (basic_auth_matches(request, "johndoe", "ilovejane")) {
    13       handler(request, response);
    14     } else {
    15       let body = "Unauthorized";
    16       response.setStatusLine(request.httpVersion, 401, "Unauthorized");
    17       response.bodyOutputStream.write(body, body.length);
    18     }
    19   };
    20 }
    22 function run_test() {
    23   let logger = Log.repository.rootLogger;
    24   Log.repository.rootLogger.addAppender(new Log.DumpAppender());
    26   let collectionsHelper = track_collections_helper();
    27   let upd = collectionsHelper.with_updated_collection;
    28   let collections = collectionsHelper.collections;
    30   do_test_pending();
    31   let server = httpd_setup({
    32     "/1.1/johndoe/storage/crypto/keys": upd("crypto", new ServerWBO("keys").handler()),
    33     "/1.1/johndoe/storage/meta/global": upd("meta",   new ServerWBO("global").handler()),
    34     "/1.1/johndoe/info/collections":    login_handling(collectionsHelper.handler)
    35   });
    37   const GLOBAL_SCORE = 42;
    39   try {
    40     _("Set up test fixtures.");
    41     new SyncTestingInfrastructure(server, "johndoe", "ilovejane", "foo");
    42     Service.scheduler.globalScore = GLOBAL_SCORE;
    43     // Avoid daily ping
    44     Svc.Prefs.set("lastPing", Math.floor(Date.now() / 1000));
    46     let threw = false;
    47     Svc.Obs.add("weave:service:sync:error", function (subject, data) {
    48       threw = true;
    49     });
    51     _("Initial state: We're successfully logged in.");
    52     Service.login();
    53     do_check_true(Service.isLoggedIn);
    54     do_check_eq(Service.status.login, LOGIN_SUCCEEDED);
    56     _("Simulate having changed the password somewhere else.");
    57     Service.identity.basicPassword = "ilovejosephine";
    59     _("Let's try to sync.");
    60     Service.sync();
    62     _("Verify that sync() threw an exception.");
    63     do_check_true(threw);
    65     _("We're no longer logged in.");
    66     do_check_false(Service.isLoggedIn);
    68     _("Sync status won't have changed yet, because we haven't tried again.");
    70     _("globalScore is reset upon starting a sync.");
    71     do_check_eq(Service.scheduler.globalScore, 0);
    73     _("Our next sync will fail appropriately.");
    74     try {
    75       Service.sync();
    76     } catch (ex) {
    77     }
    78     do_check_eq(Service.status.login, LOGIN_FAILED_LOGIN_REJECTED);
    80   } finally {
    81     Svc.Prefs.resetBranch("");
    82     server.stop(do_test_finished);
    83   }
    84 }

mercurial