Ruby on rails 集成测试rails不工作登录

Ruby on rails 集成测试rails不工作登录,ruby-on-rails,testing,login,Ruby On Rails,Testing,Login,我有这样的测试: class LockableFlowTest < ActionDispatch::IntegrationTest context 'A user' do setup do @organization = Factory(:organization) @user = Factory(:user, :organization => @organization) end

我有这样的测试:

class LockableFlowTest < ActionDispatch::IntegrationTest

      context 'A user' do

        setup do
          @organization = Factory(:organization)
          @user = Factory(:user, :organization => @organization)
        end

        should "login after 4 attempts" do
          4.times do
            post_via_redirect '/users/sign_in', 'user[username]' => @user.username, 'user[password]' => "bad_password"
            assert_equal '/users/sign_in', path
            assert_equal 'Invalid email or password.', flash[:alert]
          end
          post_via_redirect '/users/sign_in', 'user[username]' => @user.username, 'user[password]' => "password"
          assert_equal "/registrations/#{@user.id}/edit", path
          assert_nil flash[:alert]
        end
class LockableFlowTest@organization)
结束
“4次尝试后登录”应该怎么做
4.5倍
通过重定向“/users/sign\u in”,“user[username]”=>@user.username,“user[password]”=>“错误的\u密码”发布\u
assert_equal'/users/sign_in',path
断言_equal“无效电子邮件或密码”,flash[:警报]
结束
通过“重定向”/users/sign\u,“用户[用户名]”=>@user.username,“用户[密码]”=>“密码”发布
断言_equal“/注册/#{@user.id}/edit”,路径
断言无闪烁[:警报]
结束
它不工作,但应用程序正常。我想测试登录应用程序的尝试。尝试4次后,应该可以登录

代码控制器:

class SessionsController < Devise::SessionsController
  after_filter :log_failed_login, :only => :new

  private
  def log_failed_login
    if request.filtered_parameters["user"]
      user = User.find_by_username(request.filtered_parameters["user"]["username"])
      if user
        if user.first_failed_attempt.nil?
          user.first_failed_attempt = Time.now
        else
          if user.first_failed_attempt + 15.minutes <= Time.now
            user.failed_attempts = 1
            user.first_failed_attempt = Time.now
          end
        end
        user.save
      end

    end
  end


def failed_login?
  (options = env["warden.options"]) && options[:action] == "unauthenticated"
end

end
class sessioncontroller:new
私有的
def log_登录失败
if request.filtered_参数[“用户”]
user=user.find_by_username(请求.筛选的_参数[“user”][“username”])
如果用户
如果user.first\u失败\u尝试.nil?
user.first\u失败\u尝试=Time.now
其他的

如果user.first\u失败\u尝试+15.minutes有什么计数机制让应用程序知道它已经执行了四次尝试


饼干

请发布它不起作用的原因:错误、崩溃、异常。。。你试过什么?