Проверка подлинности конечной точки с паспортом js - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь проверить аутентифицированную конечную точку в моем приложении. Мое приложение узла использует express, express сеанс, локальный паспорт, реакцию и следующий для аутентификации.

Я слишком много времени пытался решить эту проблему и не смог найти решение.

В основном мой тест хотел бы:

  • отправить запрос на вход в систему и войти в систему
  • отправить запрос на аутентифицированный маршрут
  • получить соответствующий ответ

Моя проблема заключалась в том, что у меня не было постоянства между запросом на вход в систему и запросом на проверку подлинности маршрута.

Когда я отправлял запрос на вход в систему, паспорт сериализует пользователя и устанавливает req.user и req._passport.session для соответствующих значений.

При следующем запросе - аутентифицированном маршруте, мое промежуточное ПО ищет req.passport._session или req.user, но ни один из них не существует. Я бы получил 401 несанкционированный ответ.

Я разместил свое решение ниже, которое заняло у меня слишком много времени, чтобы выяснить.

1 Ответ

0 голосов
/ 21 апреля 2020

Я решил проблему с постоянством с Chai HTTP - в котором используется суперагент .

Решение было довольно простым, когда у меня были правильные инструменты. Я использовал учебник со страницы chai-http, но изменил его на asyn c await и попробуйте catch.

const { assert } = require('chai');
const chai = require('chai');
const { expect } = require('chai');
const chaiHttp = require('chai-http');


chai.use(chaiHttp);


describe('/authenticatedRequest', () => {
 it('should respond appropriately', async () => {
   const agent = chai.request.agent('http://localhost:8000');

   try {
     await agent
       .post('/rootPath/loginLocal')
       .send({ email: 'email@email.com', password: 'password' });
     const authenticatedResponse = await agent.get('/rootPAth/authenticatedRoute');
     assert.deepEqual(successResponse, workoutRes);
   } catch (e) {
     console.log(e);
   } 
  }); 
});

Теперь я вижу этот пост Как аутентифицировать запросы Supertest с помощью Passport? - что бы сэкономило мне много времени.

Надеюсь, добавление еще одного поста поможет кому-то еще в этом.

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