加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Devise Lockable在rspec控制器测试中不起作用

发布时间:2020-12-17 02:07:59 所属栏目:百科 来源:网络整理
导读:我们有一个自定义的SessionsController,它继承自标准的Devise :: SessionsController,并为User模型启用了可锁定功能.这在手动测试时有效,但在我们的控制器测试中,failed_attempts的增量不超过1.如果我将maximum_attempts尝试减少为1,它将成功锁定测试中的帐
我们有一个自定义的SessionsController,它继承自标准的Devise :: SessionsController,并为User模型启用了可锁定功能.这在手动测试时有效,但在我们的控制器测试中,failed_attempts的增量不超过1.如果我将maximum_attempts尝试减少为1,它将成功锁定测试中的帐户,但仍然不会将failed_attempts增加到1以上.

以下是我的测试示例.关于为什么failed_attempts没有增加超过1个控制器测试的任何想法?

it{
  bad_user = create(:user,password: 'passworD1')
  3.times do
    post :create,user: { email: bad_user.email,password: 'asdf' }
  end

  post :create,password: 'asdf' }
  bad_user.reload
  expect(bad_user.failed_attempts).to eq(4)
  expect(bad_user.locked_at).not_to be_blank
}

解决方法

我试过这个方法warden.clear_strategies_cache!发布后,我能够锁定帐户.

对于您的示例,它看起来像这样:

it{
  bad_user = create(:user,password: 'asdf' }
    warden.clear_strategies_cache!
  end

  post :create,password: 'asdf' }
  bad_user.reload
  expect(bad_user.failed_attempts).to eq(4)
  expect(bad_user.locked_at).not_to be_blank
}

问候,鲁斯兰

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读