Cypress получить JWToken и установить в качестве заголовка для дальнейших запросов - PullRequest
0 голосов
/ 28 сентября 2019

При попытке протестировать экспресс-веб-приложение, которое я создаю, тест должен сначала пройти аутентификацию для получения токена JWT, поиск токена работает, но метод установки заголовка для дальнейших запросов не работает.

Этот кодсоздает метод для запуска, когда требуется аутентификация,

Cypress.Commands.add("userRequest", function(requestObj) {

    // Make a login request, returning a JWT token
    cy.request({
        method: 'POST', 
        url: '/credentials',
        body: {
            "name": "test_user",
            "password": "test123_"
        }
    }).then(function(response) {
        requestObj.headers = requestObj.headers || {};
        requestObj.headers.Authentication = response.body.token;

        return cy.request(requestObj);
    });

Это код, который запускается

it('retrieves one user', function () {
        cy.userRequest(cy.request({
            url: '/users/1'
        })).then(function (response) {
            expect(response.body.name).to.equal("admin");
        });
    });

НО при запуске теста консоль сообщает мне

CypressError: cy.request () не удалось:

http://localhost:3000/users/1

Ответ, который мы получили от вашего веб-сервера, был:

401: не авторизован

Это считалось ошибкой, потому что код состояния не был «2xx» или «3xx».

Кто-нибудь может мне помочь?

заранее спасибо!

1 Ответ

0 голосов
/ 30 сентября 2019

Как я уже сказал в своем комментарии, Cypress работает в асинхронном программировании, поэтому попробуйте в support / command.js

Cypress.Commands.add('userRequest', (email, password) => {
Cypress.log({
  name: 'loginViaAuth0',
});
    const options = {
    method: 'POST',
    url: '/credentials',   
   "body":'userName='+email+'&Password='+password+'
  };
  cy.request(options)

});

Затем в вашем коде

cy.userRequest(userName,password)
  .its('body').then((response)=>{

  // Do your stuffs

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