5

OmniAuth (omniauth_crowd を使用) を使用して、ユーザーが正しいユーザー名とパスワードを送信しない場合、ユーザーがログイン ページにリダイレクトされるようにしたいと考えています。本番環境では問題なく動作しますが、テストするのに厄介な問題があります。

OmniAuth プロバイダーをモックするには、OmniAuth プラグインの作成者が推奨する次のコードを使用します。

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

上記のコードは自動的に (つまり、ユーザー名とパスワードを入力せずに) Capybara をsession#failure. にリダイレクトsession#failurelogin_pathます。

したがって、私はループに陥ります:

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

私の場合の最善の回避策は何ですか?

4

1 に答える 1

1

Omniauth で同様の問題が発生しました。
それが機能する方法であるため、回避策があるかどうかはわかりませんOmniAuth.config.mock_auth

私の解決策はfakeweb、OmniAuth モックの代わりに使用することでした。
おそらく、omniauth_crowd 自体がどのようにテストされているかを確認することから始めるべきでしょう。
これが良い例です: https://github.com/robdimarco/omniauth_crowd/blob/master/spec/omniauth/strategies/crowd_spec.rb#L49-69

于 2013-04-06T22:43:12.777 に答える