Я унаследовал веб-приложение 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. Однако, когда я захожу на сайт в браузере, перенаправление происходит, как и ожидалось.
Чего мне не хватает?