如何在集成测试中传递授权令牌标头?

2024-01-05

A 相关问题 https://stackoverflow.com/questions/12041091/ror-testing-an-action-that-uses-http-token-authentication意味着我可以使用令牌身份验证来测试请求,在我的 集成测试,如下:

get "/v1/sites", nil, :authorization => "foo"
assert_response :success

由于某种原因,标头无法到达我的应用程序:

get "/v1/sites", nil, :authorization => "foo"
assert_match response.headers, /foo/

Expected {"X-Frame-Options"=>"SAMEORIGIN", "X-XSS-Protection"=>"1; mode=block", "X-Content-Type-Options"=>"nosniff", "X-UA-Compatible"=>"chrome=1", "WWW-Authenticate"=>"Token realm=\"Application\"", "Content-Type"=>"text/html; charset=utf-8", "Cache-Control"=>"no-cache", "X-Request-Id"=>"23915302-9cfe-424d-86fe-5d60bc0d6b2c", "X-Runtime"=>"0.054857", "Content-Length"=>"27"} to match /foo/.

授权标头未通过,我可以在放置时确认throw response.headers在控制器中。当我 测试例如卷曲,我do看到标题通过。在那里我 甚至可以设置令牌并获取访问权限。相关代码来自 控制器是:

module V1
  class SitesController < ApplicationController
    before_filter :restrict_access, :only => :index

    def index
      head :success
    end

    private
    def restrict_access
      authenticate_or_request_with_http_token do |token, options|
        token == "foo"
      end
    end
  end 
end

这是最迷你的,在 Rails 4 上,使用Rails-API https://github.com/rails-api/rails-api

作为参考,这里是中间件堆栈,它比大多数默认的 Rails 应用程序要精简得多。

use ActionDispatch::Static
use Rack::Lock
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x992cd28>
use Rack::Runtime
use ActionDispatch::RequestId
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use ActionDispatch::DebugExceptions
use ActionDispatch::RemoteIp
use ActionDispatch::Reloader
use ActionDispatch::Callbacks
use ActiveRecord::Migration::CheckPending
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActionDispatch::ParamsParser
use Rack::Head
use Rack::ConditionalGet
use Rack::ETag
run MyApp::Application.routes

仅供参考。一切都是对的,我只是愚蠢而已测试错误的东西调试时:

assert_match response.headers, /foo/

显然是假的,因为这是response。正确的是测试request

get "/v1/sites", nil, :authorization => %{Token token="foo"}
assert_includes request.headers["HTTP_AUTHORIZATION"], "foo"

这一切都很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在集成测试中传递授权令牌标头? 的相关文章

随机推荐

  • 使用 jquery 从复选框列表附加文本

    我正在从事 ASP NET 项目 我的任务是附加Checkbox文本到TextBox 复选框的文本从数据库值绑定复选框列表 protected void prbtn Click object sender EventArgs e strin
  • C# 中的 WinForms Aero 向导?

    我正在寻找在 WinForms 中实现一个向导 C notWPF 我希望它符合 Aero Wizard 指南 谁能指点我一些示例代码吗 Codeplex 上有两个项目 航空玻璃供应商 http aeroglassprovider codep
  • 有没有类似Solr分析工具的Elasticsearch插件?

    Solr 内置了 分析画面 https cwiki apache org confluence display solr Analysis Screen 这有助于调试特定字段类型的分词器和过滤器之间的相互作用 ElasticSearch 有
  • 如何使用 AngularJS 指令中的编译函数来重复服务中的元素

    请有人告诉我需要做什么才能在指令中呈现存储在服务中的数组中的新元素 在下面的示例中 来自服务的警报显示每个新元素都已添加到 elements 数组中 但是如何使指令在页面上显示这些新元素呢 我尝试阅读有关的所有内容compile指令中的函数
  • 如何找出 .NET Windows 窗体中哪个控件具有焦点?

    如何找出哪个控件具有焦点Windows 窗体 http en wikipedia org wiki Windows Forms Form ActiveControl http msdn microsoft com en us library
  • 如何通过 super 关键字调用基类方法

    class base public void superMethod System out println Hello i m a super class method class der extends base super superM
  • DELETE FROM `table` AS `alias` ... WHERE `alias`.`column` ...为什么语法错误?

    我用 MySQL 尝试过 DELETE FROM contact hostcommands relation AS ContactHostCommand WHERE ContactHostCommand chr id 999999 LIMI
  • 配方还产生需要包装的本地输出

    我有一个配方 可以成功调用遗留构建命令来交叉编译目标 作为副作用 它会生成一些在构建中使用的自定义本机工具 我想将这些工具转化为 tools native包允许其他食谱依赖主包来访问工件 并使用 tools native包以进一步处理这些工
  • 如何在 Fabric.js 中的画布之间拖放

    据我所知 Fabric js 内置了对同一画布内拖放操作的支持 我们怎样才能让它适用于多个画布 或者来自非画布 html 元素 例如表格中的图像 在 Fabric js 中可以在画布之间进行拖放 但涉及对私有属性的一些操作 为此原因不保证它
  • 错误代码 128 是什么?

    什么是 git remote http 错误代码 128 当我尝试推送到需要身份验证的存储库时 它从不要求输入密码 就会发生这种情况 是否有一些中心位置可以找出错误代码的含义 128是默认的致命错误代码 这并不意味着它一定与身份验证有关 这
  • 使用 QIODevice 的阻塞接口(QTcpSocket 和 QFile)时何时检查错误

    出于学习目的 我制作了通过网络发送文件的应用程序 这对我来说非常有效 这里我将发布主要部分的代码 实际发送字节的代码 我认为这就足够了 我的主要问题是 我应该何时 何地 为何以及如何检查错误 看起来不止一个问题 正如您所看到的 我通过检查每
  • 选择显示输入 AngularJS 中的值

    我需要做这样的事情 当你选择 ex 登录 然后在输入文本中显示login from scope logins与password JS scope logins login log password pass HTML
  • 在java中展平嵌套数组

    我想展平嵌套数组 例如 1 2 3 4 gt 1 2 3 4 在java中手动我找不到线索 S 我尝试过手动java脚本指南 但没有得到解决方案 public static void main String args Object arr
  • 如何在 next.js 中使用 tailwind 背景图片? [复制]

    这个问题在这里已经有答案了 我在公共文件夹中有一张背景图片 名为bg png 在页面文件夹的index js页面中 我想使用该图像作为背景图像 我已经按照他们的官方网站的文档安装了 tailwind 我已经尝试过这个 但它不起作用 从 pu
  • 获取 Twitter API 搜索结果的关注者数量

    我想做的是提取一些搜索结果 并按用户对它们进行排序 现在我正在使用 to gt OAuthRequest http search twitter com search json http search twitter com search
  • 在索引页面上设置 PHP 会话以进行 XSRF 检查

    我遇到了以下有关 XSRF 令牌的问题 客户端 AngularJS 服务器 PHP 当index php被点击时 PHP生成一个XSRF令牌并将其保存在会话中 cookie 设置为相同的值 AngularJS 读取 cookie 并存储值
  • 如何创建带有图像和文本的按钮

    Friends 我想在 android 中显示一个按钮 如屏幕截图中提到的 谁能指导我如何实现这一目标 使用普通按钮drawableLeft属性 看我的示例代码
  • EmberJS pre2 将车把模板放在错误的位置

    我尝试在我的网络应用程序上将 EmberJS 从 pre1 更新到 pre2 但我注意到它将所有车把模板作为最后一个主体元素 有时根本不这样做 I ve 创建一个重现 http emberjs pre2 bug staticloud com
  • 有什么办法可以等到 DirectionsService 返回结果吗?

    我在使用 Google DirectionsService 时遇到问题 我知道它是异步的 这就是我遇到麻烦的原因 我想等到 DirectionsService 返回结果 而不是在没有答案的情况下执行代码 这是一个示例 function sn
  • 如何在集成测试中传递授权令牌标头?

    A 相关问题 https stackoverflow com questions 12041091 ror testing an action that uses http token authentication意味着我可以使用令牌身份验