我想測試我的密碼哈希函數,但由於某些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