Ошибка JWT Malformed при тестировании приложения express с использованием мокко - PullRequest
1 голос
/ 14 июля 2020

Я пытаюсь написать тестовые файлы для своих пользовательских маршрутов. У меня возникла проблема с маршрутом удаления для пользователя. Маршрут определяется следующим образом /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), по моему мнению, он должен работать так же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...