Ich versuche, meine Passwort-Hashing-Funktion zu testen, aber ich bekomme weiterhin Fehler aufgrund einiger TypeError Fehler.Mocha werfen Fehler beim Testen node.crypto Funktionen
Ich bin sicher, dass die Funktion funktioniert, seit ich versuchte, es aus einer anderen Datei aufzurufen, und ich bekomme das erwartete Ergebnis ohne Fehler. Hier
ist die Funktion:
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);
});
});
});
};
Hier ist der Test, der fehlschlägt:
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);
});
});
});
});
Und das ist der 'Fehler':
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)
Hat jemand eine Ahnung, warum ?
Ich verwende mocha
mit should
und Entwicklung auf node
.
Es ist nicht klar ist, welche die Funktion der Fehler zu werfen ist. Könnten Sie das klären? – pietrovismara
Natürlich gibt es nur eine Funktion 'hashPassword()', die sich in einer Datei namens 'utils.js' befindet. Wenn Sie nun fragen, wo der Fehler bei 'at Promise (api \ paths \ users \ utils.js: 24: 12) liegt, dann ist dies die erste Verwendung von crypto' crypto.randomBytes' – Johnny
Nun, ich denke, Sie haben bereits überprüft die Größe, die Sie übergeben, um crypto.randomBytes gleich oder größer als 0 zu sein? – pietrovismara