1

我想对登录流程进行验收测试,但我遇到了意外的user.authenticate方法行为。

开发环境中的身份验证按预期工作:带有电子邮件和普通密码对的 POST 完美通过。当我运行测试时出现问题:使用普通密码的身份验证失败。但奇怪的是,它成功了密码的 hash

这是代码:

class SessionsController < ApplicationController ... def create user = User.find_by_email(params[:email].downcase) logger.debug Rails.env logger.debug "password #{params[:password]}" logger.debug user.authenticate(params[:password]).to_yaml ...

以下是不同环境的日志:

env development password 123456 --- !ruby/object:User

env test password 123456 --- false

env test password $2a$10$70AlnpaXIMHtjDUei/1HU.OSEG4WVjW6ens3jzN04bC8SOxTv2Ftm --- !ruby/object:User

知道我该怎么做才能在测试环境中使用纯密码成功进行身份验证吗?

bcrypt-ruby在 ActiveModel 对象中使用密码。

谢谢。

4

1 回答 1

1

这里:

factory :user do 
   first_name "Gustav"
   password { BCrypt::Password.create("123456") }
end

您正在为给定的字符串创建一个作为摘要的密码。将其更改为:

 password "123456"
 password_confirmation { password }

并让 BCrypt 创建摘要。

于 2014-10-28T19:37:25.547 回答