services/sync/tests/unit/test_utils_passphrase.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/services/sync/tests/unit/test_utils_passphrase.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,73 @@
     1.4 +Cu.import("resource://services-sync/util.js");
     1.5 +
     1.6 +function run_test() {
     1.7 +  _("Generated passphrase has length 26.");
     1.8 +  let pp = Utils.generatePassphrase();
     1.9 +  do_check_eq(pp.length, 26);
    1.10 +
    1.11 +  const key = "abcdefghijkmnpqrstuvwxyz23456789";
    1.12 +  _("Passphrase only contains [" + key + "].");
    1.13 +  do_check_true(pp.split('').every(function(chr) key.indexOf(chr) != -1));
    1.14 +
    1.15 +  _("Hyphenated passphrase has 5 hyphens.");
    1.16 +  let hyphenated = Utils.hyphenatePassphrase(pp);
    1.17 +  _("H: " + hyphenated);
    1.18 +  do_check_eq(hyphenated.length, 31);
    1.19 +  do_check_eq(hyphenated[1], '-');
    1.20 +  do_check_eq(hyphenated[7], '-');
    1.21 +  do_check_eq(hyphenated[13], '-');
    1.22 +  do_check_eq(hyphenated[19], '-');
    1.23 +  do_check_eq(hyphenated[25], '-');
    1.24 +  do_check_eq(pp,
    1.25 +      hyphenated.slice(0, 1) + hyphenated.slice(2, 7)
    1.26 +      + hyphenated.slice(8, 13) + hyphenated.slice(14, 19)
    1.27 +      + hyphenated.slice(20, 25) + hyphenated.slice(26, 31));
    1.28 +
    1.29 +  _("Arbitrary hyphenation.");
    1.30 +  // We don't allow invalid characters for our base32 character set.
    1.31 +  do_check_eq(Utils.hyphenatePassphrase("1234567"), "2-34567");  // Not partial, so no trailing dash.
    1.32 +  do_check_eq(Utils.hyphenatePassphrase("1234567890"), "2-34567-89");
    1.33 +  do_check_eq(Utils.hyphenatePassphrase("abcdeabcdeabcdeabcdeabcde"), "a-bcdea-bcdea-bcdea-bcdea-bcde");
    1.34 +  do_check_eq(Utils.hyphenatePartialPassphrase("1234567"), "2-34567-");
    1.35 +  do_check_eq(Utils.hyphenatePartialPassphrase("1234567890"), "2-34567-89");
    1.36 +  do_check_eq(Utils.hyphenatePartialPassphrase("abcdeabcdeabcdeabcdeabcde"), "a-bcdea-bcdea-bcdea-bcdea-bcde");
    1.37 +
    1.38 +  do_check_eq(Utils.hyphenatePartialPassphrase("a"), "a-");
    1.39 +  do_check_eq(Utils.hyphenatePartialPassphrase("1234567"), "2-34567-");
    1.40 +  do_check_eq(Utils.hyphenatePartialPassphrase("a-bcdef-g"),
    1.41 +              "a-bcdef-g");
    1.42 +  do_check_eq(Utils.hyphenatePartialPassphrase("abcdefghijklmnop"),
    1.43 +              "a-bcdef-ghijk-mnp");
    1.44 +  do_check_eq(Utils.hyphenatePartialPassphrase("abcdefghijklmnopabcde"),
    1.45 +              "a-bcdef-ghijk-mnpab-cde");
    1.46 +  do_check_eq(Utils.hyphenatePartialPassphrase("a-bcdef-ghijk-LMNOP-ABCDE-Fg"),
    1.47 +              "a-bcdef-ghijk-mnpab-cdefg-");
    1.48 +  // Cuts off.
    1.49 +  do_check_eq(Utils.hyphenatePartialPassphrase("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").length, 31);
    1.50 +
    1.51 +  _("Normalize passphrase recognizes hyphens.");
    1.52 +  do_check_eq(Utils.normalizePassphrase(hyphenated), pp);
    1.53 +
    1.54 +  _("Skip whitespace.");
    1.55 +  do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase("aaaaaaaaaaaaaaaaaaaaaaaaaa  "));
    1.56 +  do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase("	 aaaaaaaaaaaaaaaaaaaaaaaaaa"));
    1.57 +  do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase("    aaaaaaaaaaaaaaaaaaaaaaaaaa  "));
    1.58 +  do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase("    a-aaaaa-aaaaa-aaaaa-aaaaa-aaaaa  "));
    1.59 +  do_check_true(Utils.isPassphrase("aaaaaaaaaaaaaaaaaaaaaaaaaa  "));
    1.60 +  do_check_true(Utils.isPassphrase("	 aaaaaaaaaaaaaaaaaaaaaaaaaa"));
    1.61 +  do_check_true(Utils.isPassphrase("    aaaaaaaaaaaaaaaaaaaaaaaaaa  "));
    1.62 +  do_check_true(Utils.isPassphrase("    a-aaaaa-aaaaa-aaaaa-aaaaa-aaaaa  "));
    1.63 +  do_check_false(Utils.isPassphrase("    -aaaaa-aaaaa-aaaaa-aaaaa-aaaaa  "));
    1.64 +
    1.65 +  _("Normalizing 20-char passphrases.");
    1.66 +  do_check_eq(Utils.normalizePassphrase("abcde-abcde-abcde-abcde"),
    1.67 +              "abcdeabcdeabcdeabcde");
    1.68 +  do_check_eq(Utils.normalizePassphrase("a-bcde-abcde-abcde-abcde"),
    1.69 +              "a-bcde-abcde-abcde-abcde");
    1.70 +  do_check_eq(Utils.normalizePassphrase(" abcde-abcde-abcde-abcde "),
    1.71 +              "abcdeabcdeabcdeabcde");
    1.72 +
    1.73 +  _("Normalizing username.");
    1.74 +  do_check_eq(Utils.normalizeAccount("   QA1234+boo@mozilla.com	"), "QA1234+boo@mozilla.com");
    1.75 +  do_check_eq(Utils.normalizeAccount("QA1234+boo@mozilla.com"), "QA1234+boo@mozilla.com");
    1.76 +}

mercurial