|
1 Cu.import("resource://services-sync/util.js"); |
|
2 |
|
3 function run_test() { |
|
4 _("Generated passphrase has length 26."); |
|
5 let pp = Utils.generatePassphrase(); |
|
6 do_check_eq(pp.length, 26); |
|
7 |
|
8 const key = "abcdefghijkmnpqrstuvwxyz23456789"; |
|
9 _("Passphrase only contains [" + key + "]."); |
|
10 do_check_true(pp.split('').every(function(chr) key.indexOf(chr) != -1)); |
|
11 |
|
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)); |
|
25 |
|
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"); |
|
34 |
|
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); |
|
47 |
|
48 _("Normalize passphrase recognizes hyphens."); |
|
49 do_check_eq(Utils.normalizePassphrase(hyphenated), pp); |
|
50 |
|
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 ")); |
|
61 |
|
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"); |
|
69 |
|
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 } |