UNPKG

5.96 kBJavaScriptView Raw
1var bcrypt = require('../bcrypt');
2
3module.exports = {
4 test_salt_length: function(assert) {
5 var salt = bcrypt.genSaltSync(10);
6 assert.strictEqual(29, salt.length, "Salt isn't the correct length.");
7 var split_salt = salt.split('$');
8 assert.strictEqual(split_salt[1], '2b');
9 assert.strictEqual(split_salt[2], '10');
10 assert.done();
11 },
12 test_salt_no_params: function(assert) {
13 // same as test_verify_salt except using default rounds of 10
14 var salt = bcrypt.genSaltSync();
15 var split_salt = salt.split('$');
16 assert.strictEqual(split_salt[1], '2b');
17 assert.strictEqual(split_salt[2], '10');
18 assert.done();
19 },
20 test_salt_rounds_is_string_number: function(assert) {
21 assert.throws(function() {bcrypt.genSaltSync('10');}, "Should throw an Error. No params.");
22 assert.done();
23 },
24 test_salt_rounds_is_NaN: function(assert) {
25 assert.throws(function() {bcrypt.genSaltSync('b');}, "Should throw an Error. gen_salt requires rounds to be a number.");
26 assert.done();
27 },
28 test_salt_minor_a: function(assert) {
29 var salt = bcrypt.genSaltSync(10, 'a');
30 assert.strictEqual(29, salt.length, "Salt isn't the correct length.");
31 var split_salt = salt.split('$');
32 assert.strictEqual(split_salt[1], '2a');
33 assert.strictEqual(split_salt[2], '10');
34 assert.done();
35 },
36 test_salt_minor_b: function(assert) {
37 var salt = bcrypt.genSaltSync(10, 'b');
38 assert.strictEqual(29, salt.length, "Salt isn't the correct length.");
39 var split_salt = salt.split('$');
40 assert.strictEqual(split_salt[1], '2b');
41 assert.strictEqual(split_salt[2], '10');
42 assert.done();
43 },
44 test_hash: function(assert) {
45 assert.ok(bcrypt.hashSync('password', bcrypt.genSaltSync(10)), "Shouldn't throw an Error.");
46 assert.done();
47 },
48 test_hash_rounds: function(assert) {
49 var hash = bcrypt.hashSync('password', 8);
50 assert.strictEqual(bcrypt.getRounds(hash), 8, "Number of rounds should equal 8.");
51 assert.done();
52 },
53 test_hash_empty_string: function(assert) {
54 assert.ok(bcrypt.hashSync('', bcrypt.genSaltSync(10)), "Shouldn't throw an Error.");
55 assert.throws(function() {bcrypt.hashSync('password', '')}, "Should have thrown an Error related to the salt.");
56 assert.throws(function() {bcrypt.hashSync('', '')}, "Should have thrown an Error related to the salt.");
57 assert.done();
58 },
59 test_hash_pw_no_params: function(assert) {
60 assert.throws(function() {bcrypt.hashSync();}, "Should throw an Error. No Params.");
61 assert.done();
62 },
63 test_hash_pw_one_param: function(assert) {
64 assert.throws(function() {bcrypt.hashSync('password');}, "Should throw an Error. No salt.");
65 assert.done();
66 },
67 test_hash_pw_not_hash_str: function(assert) {
68 assert.throws(function() {bcrypt.hashSync('password', {});}, "Should throw an Error. hash should be a string or number.");
69 assert.done();
70 },
71 test_hash_salt_validity: function(assert) {
72 assert.expect(2);
73 assert.ok(bcrypt.hashSync('password', '$2a$10$somesaltyvaluertsetrse'));
74 assert.throws(function() {
75 bcrypt.hashSync('password', 'some$value');
76 });
77 assert.done();
78 },
79 test_verify_salt: function(assert) {
80 var salt = bcrypt.genSaltSync(10);
81 var split_salt = salt.split('$');
82 assert.strictEqual(split_salt[1], '2b');
83 assert.strictEqual(split_salt[2], '10');
84 assert.done();
85 },
86 test_verify_salt_min_rounds: function(assert) {
87 var salt = bcrypt.genSaltSync(1);
88 var split_salt = salt.split('$');
89 assert.strictEqual(split_salt[1], '2b');
90 assert.strictEqual(split_salt[2], '04');
91 assert.done();
92 },
93 test_verify_salt_max_rounds: function(assert) {
94 var salt = bcrypt.genSaltSync(100);
95 var split_salt = salt.split('$');
96 assert.strictEqual(split_salt[1], '2b');
97 assert.strictEqual(split_salt[2], '31');
98 assert.done();
99 },
100 test_hash_compare: function(assert) {
101 var salt = bcrypt.genSaltSync(10);
102 assert.strictEqual(29, salt.length, "Salt isn't the correct length.");
103 var hash = bcrypt.hashSync("test", salt);
104 assert.ok(bcrypt.compareSync("test", hash), "These hashes should be equal.");
105 assert.ok(!(bcrypt.compareSync("blah", hash)), "These hashes should not be equal.");
106 assert.done();
107 },
108 test_hash_compare_empty_strings: function(assert) {
109 assert.ok(!(bcrypt.compareSync("", "password")), "These hashes should not be equal.");
110 assert.ok(!(bcrypt.compareSync("", "")), "These hashes should not be equal.");
111 assert.ok(!(bcrypt.compareSync("password", "")), "These hashes should not be equal.");
112 assert.done();
113 },
114 test_hash_compare_invalid_strings: function(assert) {
115 var fullString = 'envy1362987212538';
116 var hash = '$2a$10$XOPbrlUPQdwdJUpSrIF6X.LbE14qsMmKGhM1A8W9iqaG3vv1BD7WC';
117 var wut = ':';
118 bcrypt.compareSync(fullString, hash, function(err, res) {
119 assert.ok(res);
120 });
121 bcrypt.compareSync(fullString, wut, function(err, res) {
122 assert.ok(!res)
123 });
124 assert.done();
125 },
126 test_getRounds: function(assert) {
127 var hash = bcrypt.hashSync("test", bcrypt.genSaltSync(9));
128 assert.strictEqual(9, bcrypt.getRounds(hash), "getRounds can't extract rounds");
129 assert.done();
130 },
131 test_getRounds: function(assert) {
132 var hash = bcrypt.hashSync("test", bcrypt.genSaltSync(9));
133 assert.strictEqual(9, bcrypt.getRounds(hash), "getRounds can't extract rounds");
134 assert.throws(function() {bcrypt.getRounds(''); }, "Must pass a valid hash to getRounds");
135 assert.done();
136 }
137};