Использование Cypress для тестирования приложения, которое опирается на OAuth - PullRequest
0 голосов
/ 24 мая 2019

Я унаследовал веб-приложение Node.js, которое использует OAuth. Каждый раз, когда вы посещаете страницу, приложение гарантирует, что вы прошли аутентификацию. Обратите внимание, что здесь нет Angular, React, Vue и т. Д. Каждая страница имеет прямой HTML.

Я хочу проверить этот сайт, используя Cypress . Моя проблема в том, что я застрял на начальном перенаправлении от провайдера аутентификации. Cypress подтверждает OAuth является проблемой .

commands.js

Cypress.Commands.add('login', (credentials) => {
  var settings = {
    'clientId':'<id>',
    'scope':'<scope-list>',
    ...
  };

  var body = `client_id=${settings.clientId}&scope=${settings.scope}...`;

  var requestOptions = {
    method: 'POST',
    url: 'https://login.microsoftonline.com/...',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: body
  }

  cy.request(requestOptions);
});

Тогда в моем тесте я имею:

context('Home', () => {
  it('Visits Successfully', () => {
    cy.login();

    cy.title().should('include', 'welcome');
  });
});

В тестовом средстве я вижу, что происходит запрос POST входа в систему. Я подтвердил, что токен доступа получен с помощью console.log, однако мой заголовок пуст. Это как перенаправление после того, как OAuth не происходит в Cypress. Однако, когда я захожу на сайт в браузере, перенаправление происходит, как и ожидалось.

Чего мне не хватает?

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