services/sync/tests/unit/test_clients_escape.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/services/sync/tests/unit/test_clients_escape.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,64 @@
     1.4 +/* Any copyright is dedicated to the Public Domain.
     1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */
     1.6 +
     1.7 +Cu.import("resource://services-sync/keys.js");
     1.8 +Cu.import("resource://services-sync/record.js");
     1.9 +Cu.import("resource://services-sync/service.js");
    1.10 +Cu.import("resource://services-sync/util.js");
    1.11 +Cu.import("resource://testing-common/services/sync/utils.js");
    1.12 +
    1.13 +function run_test() {
    1.14 +  _("Set up test fixtures.");
    1.15 +
    1.16 +  ensureLegacyIdentityManager();
    1.17 +  Service.identity.username = "john@example.com";
    1.18 +  Service.clusterURL = "http://fakebase/";
    1.19 +  let baseUri = "http://fakebase/1.1/foo/storage/";
    1.20 +  let pubUri = baseUri + "keys/pubkey";
    1.21 +  let privUri = baseUri + "keys/privkey";
    1.22 +
    1.23 +  Service.identity.syncKey = "abcdeabcdeabcdeabcdeabcdea";
    1.24 +  let keyBundle = Service.identity.syncKeyBundle;
    1.25 +
    1.26 +  let engine = Service.clientsEngine;
    1.27 +
    1.28 +  try {
    1.29 +    _("Test that serializing client records results in uploadable ascii");
    1.30 +    engine.localID = "ascii";
    1.31 +    engine.localName = "wéävê";
    1.32 +
    1.33 +    _("Make sure we have the expected record");
    1.34 +    let record = engine._createRecord("ascii");
    1.35 +    do_check_eq(record.id, "ascii");
    1.36 +    do_check_eq(record.name, "wéävê");
    1.37 +
    1.38 +    _("Encrypting record...");
    1.39 +    record.encrypt(keyBundle);
    1.40 +    _("Encrypted.");
    1.41 +
    1.42 +    let serialized = JSON.stringify(record);
    1.43 +    let checkCount = 0;
    1.44 +    _("Checking for all ASCII:", serialized);
    1.45 +    Array.forEach(serialized, function(ch) {
    1.46 +      let code = ch.charCodeAt(0);
    1.47 +      _("Checking asciiness of '", ch, "'=", code);
    1.48 +      do_check_true(code < 128);
    1.49 +      checkCount++;
    1.50 +    });
    1.51 +
    1.52 +    _("Processed", checkCount, "characters out of", serialized.length);
    1.53 +    do_check_eq(checkCount, serialized.length);
    1.54 +
    1.55 +    _("Making sure the record still looks like it did before");
    1.56 +    record.decrypt(keyBundle);
    1.57 +    do_check_eq(record.id, "ascii");
    1.58 +    do_check_eq(record.name, "wéävê");
    1.59 +
    1.60 +    _("Sanity check that creating the record also gives the same");
    1.61 +    record = engine._createRecord("ascii");
    1.62 +    do_check_eq(record.id, "ascii");
    1.63 +    do_check_eq(record.name, "wéävê");
    1.64 +  } finally {
    1.65 +    Svc.Prefs.resetBranch("");
    1.66 +  }
    1.67 +}

mercurial