2012-04-11 81 views
0

集成測試軌道我有這樣的測試:工作不登錄

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 

它不工作,但該應用程序是好的。我想測試登錄到應用程序的嘗試。 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 
+0

請發帖爲什麼它不起作用:錯誤,崩潰,異常......你試過什麼? – Soader03 2012-04-11 13:11:50

回答