我想对登录流程进行验收测试,并且遇到意外的user.authenticate
方法行为。在测试环境中使用Rails的user.authenticate()出现意外的行为
开发环境中的身份验证按预期工作:使用电子邮件和纯密码对的POST可以完美地通过它。我运行测试时出现问题:使用纯密码进行身份验证失败。但奇怪的是,它成功与密码的散列。
下面的代码:
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对象中的密码。
谢谢。
用户如何在测试中创建? – BroiSatse 2014-10-28 19:32:58
它是来自users.yml或FactoryGirl生成对象的一个固定装置。在测试数据库中,密码哈希总是一个bcrypt产品。 – 2014-10-28 19:34:20
约翰: FIRST_NAME:约翰 password_digest:$ 2A $ 10 $ R1kxWTCTO/u3YsbEwI6WRO4b2BfPCfLlktyTt2HtblL1YF4pZEskG#123456 – 2014-10-28 19:34:42