我想测试我的密码哈希函数,但由于某些TypeError错误,我一直在获取失败。摩卡在测试node.crypto函数时抛出错误
我相信,因为我试图从一些其他的文件称之为功能工作,我得到预期的结果没有任何错误。
下面是函数:
exports.hashPassword = (password) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(salt_length, (err, buf) => {
if (err) reject(err);
const salt = buf.toString('base64');
crypto.pbkdf2(password, salt, iterations, keylen, digest, (err, key) => {
if (err) reject(err);
const hashedPassword = '{X-PBKDF2}:'+digest+':'+keylenB64+':'+iterationsB64+':'+salt+':'+key.toString('base64');
resolve(hashedPassword);
});
});
});
};
这里是一个失败的试验:
describe('users',() => {
describe('utils',() => {
it('should hash a password', (done) => {
const password = 'secret';
utils.hashPassword('secret')
.then((hash) => {
console.log('Hash: '+ hash);
done();
})
.catch((err) => {
console.log(err);
done(err);
});
});
});
});
这是 '错误':
1 failing
1) users utils should hash a password:
TypeError: size must be a number >= 0
at Promise (api\paths\users\utils.js:24:12)
at Object.exports.hashPassword (api\paths\users\utils.js:14:10)
at Context.it (api\paths\users\utils.test.js:30:13)
有任何人任何想法,为什么?
我使用mocha
与should
和node
发展。
目前还不清楚这是投掷错误的功能。你能澄清吗? – pietrovismara
当然,只有一个函数hashPassword()驻留在一个名为utils.js的文件中。现在,如果你问在'Promise(api \ paths \ users \ utils.js:24:12)'错误指向哪里,那么这是第一次使用加密'crypto.randomBytes' – Johnny
嗯,我想你已经已经检查你传递给crypto.randomBytes的大小是否等于或大于0? – pietrovismara