mirror of https://github.com/MaxLeiter/Drift
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
2.9 KiB
JavaScript
119 lines
2.9 KiB
JavaScript
3 years ago
|
var bcrypt = require('../bcrypt');
|
||
|
|
||
|
var EXPECTED = 2500; //number of times to iterate these tests...
|
||
|
|
||
|
module.exports = {
|
||
|
test_salt_length: function(assert) {
|
||
|
assert.expect(EXPECTED);
|
||
|
var n = 0;
|
||
|
for (var i = 0; i < EXPECTED; i++) {
|
||
|
bcrypt.genSalt(10, function(err, salt) {
|
||
|
assert.equals(29, salt.length, "Salt ("+salt+") isn't the correct length. It is: " + salt.length);
|
||
|
n++;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function checkVal() {
|
||
|
if (n == EXPECTED) {
|
||
|
assert.done();
|
||
|
} else {
|
||
|
setTimeout(checkVal, 100);
|
||
|
}
|
||
|
}
|
||
|
setTimeout(checkVal, 100);
|
||
|
},
|
||
|
test_hash_length: function(assert) {
|
||
|
assert.expect(EXPECTED);
|
||
|
var SALT = '$2a$04$TnjywYklQbbZjdjBgBoA4e';
|
||
|
var n = 0;
|
||
|
for (var i = 0; i < EXPECTED; i++) {
|
||
|
bcrypt.hash('test', SALT, function(err, crypted) {
|
||
|
assert.equals(60, crypted.length, "Encrypted ("+crypted+") isn't the correct length. It is: " + crypted.length);
|
||
|
n++;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function checkVal() {
|
||
|
if (n == EXPECTED) {
|
||
|
assert.done();
|
||
|
} else {
|
||
|
setTimeout(checkVal, 100);
|
||
|
}
|
||
|
}
|
||
|
setTimeout(checkVal, 100);
|
||
|
},
|
||
|
test_compare: function(assert) {
|
||
|
assert.expect(EXPECTED);
|
||
|
var HASH = '$2a$04$TnjywYklQbbZjdjBgBoA4e9G7RJt9blgMgsCvUvus4Iv4TENB5nHy';
|
||
|
var n = 0;
|
||
|
for (var i = 0; i < EXPECTED; i++) {
|
||
|
bcrypt.compare('test', HASH, function(err, match) {
|
||
|
assert.equal(true, match, "No match.");
|
||
|
n++;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function checkVal() {
|
||
|
if (n == EXPECTED) {
|
||
|
assert.done();
|
||
|
} else {
|
||
|
setTimeout(checkVal, 100);
|
||
|
}
|
||
|
}
|
||
|
setTimeout(checkVal, 100);
|
||
|
},
|
||
|
test_hash_and_compare: function(assert) {
|
||
|
assert.expect((EXPECTED-1)*3);
|
||
|
var salt = bcrypt.genSaltSync(4),
|
||
|
idx = 0,
|
||
|
good_done = false,
|
||
|
bad_done = false;
|
||
|
|
||
|
function next() {
|
||
|
return test('secret' + Math.random());
|
||
|
}
|
||
|
|
||
|
function test(password) {
|
||
|
idx += 1;
|
||
|
return bcrypt.hash(password, salt, function(err, hash) {
|
||
|
if (err) throw err;
|
||
|
//console.log('\nbcrypt iter ' + idx);
|
||
|
|
||
|
assert.ok(hash);
|
||
|
|
||
|
bcrypt.compare(password, hash, function(err, res) {
|
||
|
//if (err) throw err;
|
||
|
assert.ok(res);
|
||
|
if (idx >= (EXPECTED-1)) {
|
||
|
good_done = true;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
bcrypt.compare('bad' + password, hash, function(err, res) {
|
||
|
//if (err) throw err;
|
||
|
assert.ok(!res);
|
||
|
if (idx >= (EXPECTED-1)) {
|
||
|
bad_done = true;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
if (idx < ((EXPECTED)-1)) {
|
||
|
next();
|
||
|
} else {
|
||
|
function checkDone() {
|
||
|
if (idx >= (EXPECTED-1) && good_done && bad_done) {
|
||
|
assert.done();
|
||
|
} else {
|
||
|
setTimeout(checkDone, 100);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
setTimeout(checkDone, 100);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
next();
|
||
|
}
|
||
|
};
|