我正在构建一个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.
我们非常感谢您提供的任何建议,如有必要,我可以更详细地修改此问题。谢谢!
答案 0 :(得分:0)
我最近遇到了同样的问题,并在GitHub上找到了一个帖子。我还没有机会测试我收到的答案,但我认为无论如何我都会为你提供 - 也许它会为你工作。
https://github.com/plataformatec/devise/issues/1029#issuecomment-74778193