水豚:: InfiniteRedirectError

时间:2013-03-28 00:58:30

标签: ruby-on-rails cucumber capybara

使用OmniAuth(使用omniauth_crowd),如果用户没有提交正确的用户名和密码,我希望将用户重定向回登录页面。它在生产中工作正常,但我测试它时遇到了烦人的问题。

要模拟OmniAuth提供程序,我按照OmniAuth插件的作者的建议使用以下代码:

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

上面的代码会自动(即不输入用户名和密码)将Capybara重定向到session#failure。我的session#failure重定向到login_path

因此我最终陷入了一个循环:

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

我案例的最佳解决方法是什么?

1 个答案:

答案 0 :(得分: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