我正在尝试测试登录用户是否可以访问管理页面。
我在灯具中设置了一个用户:
user_one:
email: user_one@test.com
encrypted_password: <%= User.new.send(:password_digest, 'password') %>
在测试中,我登录并导航到管理页面。但是测试失败并重定向。
class AdminTestLoggedIn < ActionDispatch::IntegrationTest
test "Log in" do
post user_session_path, params: {user: {
email: users(:user_one).email,
password: "password"
}}
get admin_path
assert_response :success
end
end
我可以看到重定向指向登录页面:
test "Log in" do
...
assert_redirected_to new_user_session_path
end
所以,我好像还没有登录。我哪里出错了?我的猜测是我没有正确处理密码加密。如果是这样,应该怎么做?
最佳答案
我的初始测试失败了,因为我将用户设置为 :confirmable
但 user_one 没有 :confirmed_at
日期。未经确认,用户无法登录,因此admin_path
正在重定向。
修复方法是设置 :confirmed_at
在 users.yml
:
user_one:
email: user_one@test.com
encrypted_password: <%= User.new.send(:password_digest, 'password') %>
confirmed_at: <%= Time.now %>
关于ruby-on-rails - rails : How do I login a Devise user in an integration test?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47366078/