gpt4 book ai didi

ruby-on-rails - 如何测试密码修改成功?

转载 作者:行者123 更新时间:2023-12-04 05:47:50 26 4
gpt4 key购买 nike

我使用 bcrypt-rubyhas_secure_password 将一个基本应用程序与用户身份验证结合在一起。结果本质上是来自 Rails Tutorial 的应用程序的准系统版本。 .换句话说,我有一个 RESTful 用户模型以及登录和注销功能。

作为编辑用户信息测试的一部分,我编写了一个更改密码的测试。虽然更改密码在浏览器中工作得很好,但我下面的测试没有通过。

subject { page }

describe "successful password change"
let(:new_password) { "foobaz" }
before do
fill_in "Password", with: new_password
fill_in "Password Confirmation", with: new_password
click_button "Save changes"
end

specify { user.reload.password.should == new_password }
end

显然,我误解了这里的一些基本细节。

简而言之:

1) 为什么上面的代码不起作用?更改密码功能在浏览器中有效。同时,rspec 继续重新加载上面最后一行中的旧密码。然后测试失败。

2) 测试密码更改的更好方法是什么?

编辑:

初始密码设置为foobar,错误信息为:

Failure/Error: specify { user.reload.password.should == new_password }
expected: "foobaz"
got: "foobar" (using ==)

基本上,看起来 before block 实际上并没有保存新密码。

供引用,相关 Controller Action 如下:

def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
flash[:success] = "Profile Updated"
sign_in @user
redirect_to root_path
else
render 'edit'
end
end

最佳答案

对于 Devise 用户,请使用 #valid_password?相反:

expect(user.valid_password?('correct_password')).to be(true)

来源:Ryan Bigg

关于ruby-on-rails - 如何测试密码修改成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12919835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com