2013-03-28 11 views
5

OmniAuth(omniauth_crowd)を使用して、正しいユーザー名とパスワードを送信しないと、ユーザーをログインページにリダイレクトすることをお勧めします。それはプロダクションでうまく動作しますが、私はそれをテストする厄介な問題があります。 OmniAuthプロバイダを模擬するCapybara :: InfiniteRedirectError

OmniAuthプラグインの作成者によって推奨されるように、私は、次のコードを使用:

OmniAuth.config.test_mode = true 
OmniAuth.config.mock_auth[:someProvider] = :invalid_credentials 
visit_page @page 

上記のコードに自動的に(すなわちユーザ名とパスワードを入力せず)session#failureにカピバラをリダイレクトします。私のsession#failurelogin_pathにリダイレクトされます。

したがって、私はループで終わる:

redirected more than 5 times, check for infinite redirects. (Capybara::InfiniteRedirectError) 

私の場合のために最善の回避策は?

答えて

1

私はOmniauthによく似た問題がありました。
回避策があるかどうかは、OmniAuth.config.mock_authの方法であるため、わかりません。

私の解決策は、OmniAuthモッキングの代わりにfakewebを使用することでした。
まず、omniauth_crowdがどのようにテストされているのかを見てみましょう。
これは良い例です: https://github.com/robdimarco/omniauth_crowd/blob/master/spec/omniauth/strategies/crowd_spec.rb#L49-69

関連する問題