繁体   English   中英

Rails 3.2集成测试登录系统

[英]Rails 3.2 integration testing a login system

我已经按照RailsCasts的相关步骤从头开始进行身份验证: http ://railscasts.com/episodes/250-authentication-from-scratch-revised

现在,我想使用内置的测试框架进行集成测试。

在我的数据库中,因为我正在使用has_secure_password,所以我有用于email和password_digest的字段(以及其他字段)。 在我为用户准备的装置中

account_administrator:
  email: account_administrator@test.com
  password_digest: password
  first_name: Bob
  last_name: Jones
  is_team_member: true
  is_direct_manager: false
  is_senior_leadership: false
  is_reviewer: false
  is_account_administrator: true

在我的整合测试中

require 'test_helper'

class UserFlowsTest < ActionDispatch::IntegrationTest
  fixtures :users

  def login(user)
    open_session do |s|
      u = users(user)
      s.https!
      s.post "/sessions", email: u.email, password: "password"
      assert_redirected_to root_url
    end
  end



  test "logging in" do
    login(:account_administrator)
  end

end

我遇到的问题是“登录”测试失败,并显示以下错误:

  1) Error:
test_logging_in(UserFlowsTest):
BCrypt::Errors::InvalidHash: invalid hash

我认为是因为我在设备中提供的“哈希”不是真正的password_digest,而只是字符串“ password”。 如何解决此问题以使测试正常进行?

在数据库中,从应用程序用户界面或Rails控制台( User.create(...) )中使用password ='password'在数据库中手动创建用户。 然后使用rails控制台找到password_digest( User.first.password_digest )-然后将该password_digest粘贴到灯具中的password_digest字段中,它应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM