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
4

1 に答える 1

0

すでに 4 回の試行を実行したことをアプリケーションに知らせるためのカウント メカニズムは何ですか?

クッキー?Rails 3.1 の Rspec で Cookie が保持されない

于 2012-04-11T13:43:43.853 に答える