В моем проекте есть некоторый бэкэнд node.js.Для шифрования паролей я использую bcrypt .Для сравнения строкового пароля из запроса с хешированным паролем в БД я использую функцию bcrypt.compare.Моя функция bcrypt.compare хорошо работает в коде.Я проверил это вручную с почтальоном, и он хорошо работает в производстве.Но в тестах с chai-http и mocha он зависает.
Тест.Я использую mocha с chai-http, чтобы сделать запрос HTTP POST:
describe('Testing login', () => {
it('should return status 200 when there is such user in DB and password is correct', (done) => {
chai.request(server)
.post('/login')
.send({
login: 'test@test.test',
password: 'somepassword'
})
.end((err, res) => {
res.should.have.status(200)
done()
})
})
})
Функция bcrypt контроллера выглядит так:
async function auth (req, res) {
let { login, password } = req.body
try {
let payload = {}
let result = {}
await
User.findOne({ where: { userEmail: login } }).then(user => {
return result = user
})
bcrypt.compare(password, result.dataValues.password, await function (err, data) {
if (err) {
throw Error(err)
}
if (result && data) {
payload.isAdmin = result.dataValues.isAdmin
payload.ID = result.dataValues.id
let token = jwt.sign(payload, 'yoursecret')
res.status(200).send({ token: token })
} else { res.status(401) }
})
} catch (error) {
res.sendStatus(500)
}
}
Есть ли способ проверить эту функцию?
Дополнительная информация
mocha версия 5.2.0 - глобальная и локальная
узел v8.11.4
windows 10 x64
"devDependencies": {
"@types/chai-as-promised": "^7.1.0",
"chai": "^4.1.2",
"chai-as-promised": "^7.1.1",
"chai-http": "^4.2.0",
"eslint": "^5.5.0",
"eslint-config-standard": "^12.0.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^7.0.1",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-standard": "^4.0.0",
"express-unit": "^2.1.1",
"mocha": "^5.2.0",
"mock-express-request": "^0.2.2",
"mock-express-response": "^0.2.2",
"nyc": "^13.0.1",
"proxyquire": "^2.1.0",
"sinon": "^6.2.0",
"supertest": "^3.3.0",
"ws": "3.3.2"
}