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