【问题标题】:Uncaught throw :warden even with Devise::TestHelpers included即使包含了 Devise::TestHelpers 也未捕获的抛出:warden
【发布时间】:2014-10-29 22:04:09
【问题描述】:

我正在构建 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_authenticable 实现,我已经调整了here 描述的更安全的解决方案。

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

我已经在 Internet 上搜索了很多关于此错误的 Stack Overflow 问题,并尝试了我能想到的所有方法,但没有运气。据我所知,仅 Devise 测试助手就足够了,因为它们应该捕获 :warden throws 并给出适当的 401。

非常感谢大家提供的任何建议,如有必要,我可以用更多细节修改这个问题。谢谢!

【问题讨论】:

  • 哪几行代码准确地抛出了ArgumentError

标签: ruby-on-rails rspec devise warden


【解决方案1】:

我最近遇到了同样的问题,并在 GitHub 上找到了一个帖子。我实际上还没有机会测试我收到的答案,但我想我还是会为你提供它 - 也许它会对你有用。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    相关资源
    最近更新 更多