.authenticate方法因rSpec Fabricator生成的凭据而失败

时间:2014-09-11 20:04:06

标签: ruby-on-rails authentication rspec

我正在使用的测试应用程序具有标准session[:user_id]=user.id样式身份验证。我使用Fabricator来测试会话哈希的user.id赋值。当我使用Fabricator时,user.authenticate方法失败,但是当我手动传入凭证而不使用Fabricator时,测试成功通过。

我已将binding.pry放入会话控制器的创建操作中,当我打电话给他时,我绝对可以同时访问电子邮件和密码,但是"验证&# 34;功能确实失败了。这是为什么?

测试:

it "assigns user.id to session hash" do
        johndoe=Fabricate(:user) 
        puts johndoe.email
        puts johndoe.password
        post :create, email: johndoe.email, password: johndoe.password
        expect(session[:user_id]).to eq(april.id)
end

控制器:

 def create
    binding.pry
    user=User.find_by(email:params["email"])
    if user && user.authenticate(params[params["password"]])
      session[:user_id]=user.id
      flash[:success]="You have successfully signed in."
      redirect_to videos_path
    else
      flash[:danger]="There was something wrong with your email address or password."
      render 'new'
    end
  end

1 个答案:

答案 0 :(得分:0)

你有params[params["password"]]。试试params["password"]