2013-03-28 2 views
5

OmniAuth (omniauth_crowd 사용)를 사용하면 올바른 사용자 이름과 암호를 제출하지 않으면 사용자가 다시 로그인 페이지로 리디렉션됩니다. 그것은 생산에서 잘 작동하지만, 나는 성가신 문제가 그것을 테스트하고있다.Capybara :: InfiniteRedirectError

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

자동으로 위의 코드는 (사용자 이름과 암호를 입력하지 않고 즉)에 session#failure에 카피 바라를 리디렉션

는 OmniAuth 플러그인의 저자가 권장하는 나는, 다음과 같은 코드를 사용 OmniAuth 제공자를 조롱합니다. 내 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