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 +}