使用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)
我案例的最佳解决方法是什么?
答案 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