赛普拉斯/劳力士Cookie问题导致用户无法登录

时间:2019-01-25 19:36:00

标签: ruby-on-rails ruby-on-rails-5 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 :(得分:0)

好吧,那是我成为Rails赛普拉斯控制器中的白痴。我有一个控制器负责创建数据和处理任何红宝石代码的调用,但是在create调用中,它正在为其使用的帮助程序设置测试套件,但是负责该操作的方法还正在清除数据库。因此,从本质上讲,该用户已登录,然后当它要求服务器创建虚拟数据时,便擦除了数据库(包括新用户),然后尝试继续。

不用说,将来任何请求都会因为用户不存在而导致重定向到登录页面

相关问题