Wed, 31 Dec 2014 07:22:50 +0100
Correct previous dual key logic pending first delivery installment.
michael@0 | 1 | Cu.import("resource://services-sync/util.js"); |
michael@0 | 2 | |
michael@0 | 3 | function run_test() { |
michael@0 | 4 | _("Generated passphrase has length 26."); |
michael@0 | 5 | let pp = Utils.generatePassphrase(); |
michael@0 | 6 | do_check_eq(pp.length, 26); |
michael@0 | 7 | |
michael@0 | 8 | const key = "abcdefghijkmnpqrstuvwxyz23456789"; |
michael@0 | 9 | _("Passphrase only contains [" + key + "]."); |
michael@0 | 10 | do_check_true(pp.split('').every(function(chr) key.indexOf(chr) != -1)); |
michael@0 | 11 | |
michael@0 | 12 | _("Hyphenated passphrase has 5 hyphens."); |
michael@0 | 13 | let hyphenated = Utils.hyphenatePassphrase(pp); |
michael@0 | 14 | _("H: " + hyphenated); |
michael@0 | 15 | do_check_eq(hyphenated.length, 31); |
michael@0 | 16 | do_check_eq(hyphenated[1], '-'); |
michael@0 | 17 | do_check_eq(hyphenated[7], '-'); |
michael@0 | 18 | do_check_eq(hyphenated[13], '-'); |
michael@0 | 19 | do_check_eq(hyphenated[19], '-'); |
michael@0 | 20 | do_check_eq(hyphenated[25], '-'); |
michael@0 | 21 | do_check_eq(pp, |
michael@0 | 22 | hyphenated.slice(0, 1) + hyphenated.slice(2, 7) |
michael@0 | 23 | + hyphenated.slice(8, 13) + hyphenated.slice(14, 19) |
michael@0 | 24 | + hyphenated.slice(20, 25) + hyphenated.slice(26, 31)); |
michael@0 | 25 | |
michael@0 | 26 | _("Arbitrary hyphenation."); |
michael@0 | 27 | // We don't allow invalid characters for our base32 character set. |
michael@0 | 28 | do_check_eq(Utils.hyphenatePassphrase("1234567"), "2-34567"); // Not partial, so no trailing dash. |
michael@0 | 29 | do_check_eq(Utils.hyphenatePassphrase("1234567890"), "2-34567-89"); |
michael@0 | 30 | do_check_eq(Utils.hyphenatePassphrase("abcdeabcdeabcdeabcdeabcde"), "a-bcdea-bcdea-bcdea-bcdea-bcde"); |
michael@0 | 31 | do_check_eq(Utils.hyphenatePartialPassphrase("1234567"), "2-34567-"); |
michael@0 | 32 | do_check_eq(Utils.hyphenatePartialPassphrase("1234567890"), "2-34567-89"); |
michael@0 | 33 | do_check_eq(Utils.hyphenatePartialPassphrase("abcdeabcdeabcdeabcdeabcde"), "a-bcdea-bcdea-bcdea-bcdea-bcde"); |
michael@0 | 34 | |
michael@0 | 35 | do_check_eq(Utils.hyphenatePartialPassphrase("a"), "a-"); |
michael@0 | 36 | do_check_eq(Utils.hyphenatePartialPassphrase("1234567"), "2-34567-"); |
michael@0 | 37 | do_check_eq(Utils.hyphenatePartialPassphrase("a-bcdef-g"), |
michael@0 | 38 | "a-bcdef-g"); |
michael@0 | 39 | do_check_eq(Utils.hyphenatePartialPassphrase("abcdefghijklmnop"), |
michael@0 | 40 | "a-bcdef-ghijk-mnp"); |
michael@0 | 41 | do_check_eq(Utils.hyphenatePartialPassphrase("abcdefghijklmnopabcde"), |
michael@0 | 42 | "a-bcdef-ghijk-mnpab-cde"); |
michael@0 | 43 | do_check_eq(Utils.hyphenatePartialPassphrase("a-bcdef-ghijk-LMNOP-ABCDE-Fg"), |
michael@0 | 44 | "a-bcdef-ghijk-mnpab-cdefg-"); |
michael@0 | 45 | // Cuts off. |
michael@0 | 46 | do_check_eq(Utils.hyphenatePartialPassphrase("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").length, 31); |
michael@0 | 47 | |
michael@0 | 48 | _("Normalize passphrase recognizes hyphens."); |
michael@0 | 49 | do_check_eq(Utils.normalizePassphrase(hyphenated), pp); |
michael@0 | 50 | |
michael@0 | 51 | _("Skip whitespace."); |
michael@0 | 52 | do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase("aaaaaaaaaaaaaaaaaaaaaaaaaa ")); |
michael@0 | 53 | do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa")); |
michael@0 | 54 | do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa ")); |
michael@0 | 55 | do_check_eq("aaaaaaaaaaaaaaaaaaaaaaaaaa", Utils.normalizePassphrase(" a-aaaaa-aaaaa-aaaaa-aaaaa-aaaaa ")); |
michael@0 | 56 | do_check_true(Utils.isPassphrase("aaaaaaaaaaaaaaaaaaaaaaaaaa ")); |
michael@0 | 57 | do_check_true(Utils.isPassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa")); |
michael@0 | 58 | do_check_true(Utils.isPassphrase(" aaaaaaaaaaaaaaaaaaaaaaaaaa ")); |
michael@0 | 59 | do_check_true(Utils.isPassphrase(" a-aaaaa-aaaaa-aaaaa-aaaaa-aaaaa ")); |
michael@0 | 60 | do_check_false(Utils.isPassphrase(" -aaaaa-aaaaa-aaaaa-aaaaa-aaaaa ")); |
michael@0 | 61 | |
michael@0 | 62 | _("Normalizing 20-char passphrases."); |
michael@0 | 63 | do_check_eq(Utils.normalizePassphrase("abcde-abcde-abcde-abcde"), |
michael@0 | 64 | "abcdeabcdeabcdeabcde"); |
michael@0 | 65 | do_check_eq(Utils.normalizePassphrase("a-bcde-abcde-abcde-abcde"), |
michael@0 | 66 | "a-bcde-abcde-abcde-abcde"); |
michael@0 | 67 | do_check_eq(Utils.normalizePassphrase(" abcde-abcde-abcde-abcde "), |
michael@0 | 68 | "abcdeabcdeabcdeabcde"); |
michael@0 | 69 | |
michael@0 | 70 | _("Normalizing username."); |
michael@0 | 71 | do_check_eq(Utils.normalizeAccount(" QA1234+boo@mozilla.com "), "QA1234+boo@mozilla.com"); |
michael@0 | 72 | do_check_eq(Utils.normalizeAccount("QA1234+boo@mozilla.com"), "QA1234+boo@mozilla.com"); |
michael@0 | 73 | } |