Я пытаюсь написать тестовые файлы для своих пользовательских маршрутов. У меня возникла проблема с маршрутом удаления для пользователя. Маршрут определяется следующим образом /api/users
и выполняет запрос на удаление. Этот маршрут защищен и на почтальоне все работает нормально. Заголовок, который я установил в Postman, - это авторизация.
Все выглядит нормально, но в моем тестовом файле результат немного странный. Вот мой код
describe('Users', () => {
beforeEach((done) => {
User.deleteMany({}, (err) => {
done();
});
});
describe('/DELETE user', () => {
it('it should delete a user with authorized token', (done) => {
const user = new User({
username: 'testuser1',
email: 'testuser1@gmail.com',
password: 'password',
passwordConfirm: 'password',
});
let token = null;
chai
.request(server)
.post(`/api/users/signup`)
.send(user)
.end((err, res) => {
token = res.body.token;
});
chai
.request(server)
.delete(`/api/users`)
.set('Authorization', 'Bearer ' + token)
.end((err, res) => {
res.should.have.status(201);
res.body.should.be.a('object');
res.body.should.have.property('status').eql('success');
res.body.should.have
.property('message')
.eql('User deleted successfully!');
});
done();
});
});
});
Тест проходит, но я получаю эту искаженную ошибку JWT, и я не уверен, почему. Я знаю, что использую Bearer перед фактическим токеном
Это то, что упоминается в ошибке
(node: 3059) UnhandledPromiseRejectionWarning: JsonWebTokenError: jwt malformed (node: 3059) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за выброса внутри функции asyn c без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). (идентификатор отклонения: 2) (узел: 3059) [DEP0018] DeprecationWarning: необработанные отклонения обещаний устарели. В будущем, отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом выхода.
Я действительно не понимаю, что происходит, потому что, если он работает нормально, когда Я тестирую его в почтальоне, и все, что я здесь делаю, это добавляю токен, используя .set('Authorization', 'Bearer ' + token)
, по моему мнению, он должен работать так же.