未捕获的投掷:即使包含Devise :: TestHelpers也要担任警告

时间:2014-09-05 01:57:11

标签: ruby-on-rails rspec devise warden

我正在构建一个Rails JSON API并尝试编写测试以确保没有有效auth_token的请求符合401状态。

我在我的spec_helper.rb(config.include Devise::TestHelpers, type: :controller)和我的控制器规范(如下所示)中都包含了Devise测试助手。我也在每次测试前设置@request.env['devise.mapping'] = Devise.mappings[:user]。用户 正确验证的所有测试都运行良好,但任何未经授权的请求都会导致:

 ArgumentError:
    uncaught throw :warden

由于Devise删除了它们的执行:token_authenticatable,我已经调整了here所描述的更安全的解决方案。

值得注意的是我正在使用rails-api gem,因此我的ApplicationController继承自ActionController :: API而不是Base。

我已经浏览了互联网以及许多关于此错误的Stack Overflow问题并尝试了我能想到的一切但没有运气。据我所知,只有Devise测试助手应该足够了,因为他们应该抓住:warden投掷并给出适当的401.

我们非常感谢您提供的任何建议,如有必要,我可以更详细地修改此问题。谢谢!

1 个答案:

答案 0 :(得分:0)

我最近遇到了同样的问题,并在GitHub上找到了一个帖子。我还没有机会测试我收到的答案,但我认为无论如何我都会为你提供 - 也许它会为你工作。

https://github.com/plataformatec/devise/issues/1029#issuecomment-74778193