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#failure重定向到login_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 回答