1 | var bcrypt = require('../bcrypt');
|
2 |
|
3 | module.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 |
|
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 | };
|