Проблема с файлами cookie Cypress / Rails, не позволяющая пользователю оставаться в системе - PullRequest
0 голосов
/ 25 января 2019

Я столкнулся с проблемой, которую не могу определить причину. В Cypress я определил следующие команды:

Cypress.Commands.add('createUser', (opts, permissions = []) => {
  railsRequest('create_user', { user: opts, permissions })
    .its('body')
    .its('response');
});

Cypress.Commands.add('create', (type, opts) => {
  railsRequest('create', { type, opts })
    .its('body')
    .its('response');
});

Cypress.Commands.add('login', { prevSubject: true }, (subject) => {
  railsRequest('login', { id: subject.id })
    .its('body')
    .its('response')
    .as('currentUser');
});

Команда createUser не требует пояснений, команда create позволяет мне создавать фиктивные данные на сервере, а команда login регистрирует ранее созданного пользователя на сервере, который устанавливает cookie сеанса.

У меня есть следующая спецификация (в которой в настоящее время нет утверждений, так как я играю), с которой у меня проблемы:

describe('My Spec', () => {
  beforeEach(() => {
    cy.createUser({}, ['permission_name'])
      .login();
  });

  it('testing', function() {
    cy.visit('/');
    cy.create('other_resource', { name: 'resource name' }, company_id: this.currentUser.company_id)
      .as('resource')
      .then(resource => {
        cy.visit('/resource');
      });
  });
});

Ничего особенно сложного, но вот что происходит:

  • Пользователь создан
  • Авторизация происходит
  • посещений '/', который работает правильно. Chrome показывает загрузку страницы, как и ожидалось
  • Создан новый ресурс
  • Когда все будет готово, зайдите в «/ resources» - здесь приложение перенаправляет на страницу входа. По-видимому, пользователь вышел из системы.

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

У нас нет проблем с самим приложением во время работы, поэтому я не думаю, что это бэкенд, но если у кого-то есть представление о том, что происходит, мне бы понравилась некоторая проницательность

1 Ответ

0 голосов
/ 29 января 2019

Хорошо, я был идиотом на контроллере кипариса в рельсах. У меня есть контроллер, отвечающий за вызовы для создания данных и обработки любого кода ruby, но при вызове create он настраивал набор тестов для используемых им помощников, но метод, который отвечал за это, также был очистка базы данных. По сути, пользователь вошел в систему, затем, когда он попросил сервер создать фиктивные данные, он стер базу данных (включая нового пользователя), а затем попытался продолжить.

Нет необходимости говорить, что любой будущий запрос привел к тому, что он был перенаправлен на страницу входа в систему, потому что пользователь не существовал

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