michael@0: Cu.import("resource://services-sync/util.js"); michael@0: michael@0: function run_test() { michael@0: _("Generated passphrase has length 26."); michael@0: let pp = Utils.generatePassphrase(); michael@0: do_check_eq(pp.length, 26); michael@0: michael@0: const key = "abcdefghijkmnpqrstuvwxyz23456789"; michael@0: _("Passphrase only contains [" + key + "]."); michael@0: do_check_true(pp.split('').every(function(chr) key.indexOf(chr) != -1)); michael@0: michael@0: _("Hyphenated passphrase has 5 hyphens."); michael@0: let hyphenated = Utils.hyphenatePassphrase(pp); michael@0: _("H: " + hyphenated); michael@0: do_check_eq(hyphenated.length, 31); michael@0: do_check_eq(hyphenated[1], '-'); michael@0: do_check_eq(hyphenated[7], '-'); michael@0: do_check_eq(hyphenated[13], '-'); michael@0: do_check_eq(hyphenated[19], '-'); michael@0: do_check_eq(hyphenated[25], '-'); michael@0: do_check_eq(pp, michael@0: hyphenated.slice(0, 1) + hyphenated.slice(2, 7) michael@0: + hyphenated.slice(8, 13) + hyphenated.slice(14, 19) michael@0: + hyphenated.slice(20, 25) + hyphenated.slice(26, 31)); michael@0: michael@0: _("Arbitrary hyphenation."); michael@0: // We don't allow invalid characters for our base32 character set. michael@0: do_check_eq(Utils.hyphenatePassphrase("1234567"), "2-34567"); // Not partial, so no trailing dash. michael@0: do_check_eq(Utils.hyphenatePassphrase("1234567890"), "2-34567-89"); michael@0: do_check_eq(Utils.hyphenatePassphrase("abcdeabcdeabcdeabcdeabcde"), "a-bcdea-bcdea-bcdea-bcdea-bcde"); michael@0: do_check_eq(Utils.hyphenatePartialPassphrase("1234567"), "2-34567-"); michael@0: do_check_eq(Utils.hyphenatePartialPassphrase("1234567890"), "2-34567-89"); michael@0: do_check_eq(Utils.hyphenatePartialPassphrase("abcdeabcdeabcdeabcdeabcde"), "a-bcdea-bcdea-bcdea-bcdea-bcde"); michael@0: michael@0: do_check_eq(Utils.hyphenatePartialPassphrase("a"), "a-"); michael@0: do_check_eq(Utils.hyphenatePartialPassphrase("1234567"), "2-34567-"); michael@0: do_check_eq(Utils.hyphenatePartialPassphrase("a-bcdef-g"), michael@0: "a-bcdef-g"); michael@0: do_check_eq(Utils.hyphenatePartialPassphrase("abcdefghijklmnop"), michael@0: "a-bcdef-ghijk-mnp"); michael@0: do_check_eq(Utils.hyphenatePartialPassphrase("abcdefghijklmnopabcde"), michael@0: "a-bcdef-ghijk-mnpab-cde"); michael@0: do_check_eq(Utils.hyphenatePartialPassphrase("a-bcdef-ghijk-LMNOP-ABCDE-Fg"), michael@0: "a-bcdef-ghijk-mnpab-cdefg-"); michael@0: // Cuts off. michael@0: do_check_eq(Utils.hyphenatePartialPassphrase("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").length, 31); michael@0: michael@0: _("Normalize passphrase recognizes hyphens."); michael@0: do_check_eq(Utils.normalizePassphrase(hyphenated), pp); michael@0: michael@0: _("Skip whitespace."); michael@0: do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase("aaaaaaaaaaaaaaaaaaaaaaaaaa ")); michael@0: do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa")); michael@0: do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa ")); michael@0: do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase(" a-aaaaa-aaaaa-aaaaa-aaaaa-aaaaa ")); michael@0: do_check_true(Utils.isPassphrase("aaaaaaaaaaaaaaaaaaaaaaaaaa ")); michael@0: do_check_true(Utils.isPassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa")); michael@0: do_check_true(Utils.isPassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa ")); michael@0: do_check_true(Utils.isPassphrase(" a-aaaaa-aaaaa-aaaaa-aaaaa-aaaaa ")); michael@0: do_check_false(Utils.isPassphrase(" -aaaaa-aaaaa-aaaaa-aaaaa-aaaaa ")); michael@0: michael@0: _("Normalizing 20-char passphrases."); michael@0: do_check_eq(Utils.normalizePassphrase("abcde-abcde-abcde-abcde"), michael@0: "abcdeabcdeabcdeabcde"); michael@0: do_check_eq(Utils.normalizePassphrase("a-bcde-abcde-abcde-abcde"), michael@0: "a-bcde-abcde-abcde-abcde"); michael@0: do_check_eq(Utils.normalizePassphrase(" abcde-abcde-abcde-abcde "), michael@0: "abcdeabcdeabcdeabcde"); michael@0: michael@0: _("Normalizing username."); michael@0: do_check_eq(Utils.normalizeAccount(" QA1234+boo@mozilla.com "), "QA1234+boo@mozilla.com"); michael@0: do_check_eq(Utils.normalizeAccount("QA1234+boo@mozilla.com"), "QA1234+boo@mozilla.com"); michael@0: }