services/sync/tests/unit/test_utils_passphrase.js

Wed, 31 Dec 2014 07:22:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:22:50 +0100
branch
TOR_BUG_3246
changeset 4
fc2d59ddac77
permissions
-rw-r--r--

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 }

mercurial