auth-hmac功能测试问题

2024-04-01

我想在我的 api 应用程序中使用这个 gemhttps://github.com/seangeo/auth-hmac/ https://github.com/seangeo/auth-hmac/

我有一个关于创建请求身份验证测试的问题。 我想用 hmac 签署请求,但 Rails 控制器在下一个代码后没有 http 标头

 def setup
    #load from fixture
     @client = clients(:client_2)


 end

 def sign_valid_request(request,client)
    auth_hmac = AuthHMAC.new(client.key => client.secret )
    auth_hmac.sign!(request,client.key)
    request
  end

 def test_response_client_xml

      @request =  sign_valid_request(@request,@client)
      get :index  , :api_client_key => @client.key , :format=> "xml"
      @xml_response = @response.body

      assert_response :success
      assert_select   'id' , @client.id.to_s
end

路线有这样的配置

scope '/:token/' do
     # route only json & xml format
    constraints :format=> /(json|xml)/  do
       resources :clients, :only => [:index]
    end

  end

我在功能测试方面也遇到了同样的问题。要使用 AuthHMAC 正确签署每个请求,您应该将以下内容放入 test_helper.rb

def with_hmac_signed_requests(access_key_id, secret, &block)
  unless ActionController::Base < ActionController::Testing
    ActionController::Base.class_eval { include ActionController::Testing }
  end

  @controller.instance_eval %Q(
    alias real_process_with_new_base_test process_with_new_base_test

    def process_with_new_base_test(request, response)
      signature = AuthHMAC.signature(request, "#{secret}")
      request.env['Authorization'] = "AuthHMAC #{access_key_id}:" + signature
      real_process_with_new_base_test(request, response)
    end
  )

  yield

  @controller.instance_eval %Q(
    undef process_with_new_base_test
    alias process_with_new_base_test real_process_with_new_base_test
  )
end

然后在你的功能测试中:

test "secret_method should be protected by an HMAC signature" do
    with_hmac_signed_requests(key_id, secret) do
      get :protected_method
      assert_response :success
    end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

auth-hmac功能测试问题 的相关文章

随机推荐

  • jQuery 模板 - 在模板内执行 JS 代码

    我正在尝试了解有关 jQuery 模板的更多信息 但似乎无法在模板内执行任何 JS 调用 请注意 我的 objectToString 函数从未被调用 只是呈现为字符串 我一时兴起尝试将其包装在 中 但没有成功 有谁可以帮忙吗 安东尼 你可以
  • 如何使用另一个模式的表编写存储过程?

    为了调用Oracle的函数和过程 表必须在HR用户中吗 当我从另一个用户运行函数时 它给我一个编译错误 对于我的项目 我想从另一个用户运行函数和过程 我该如何实施 要使用另一个模式中的表编写函数或过程 表所有者需要授予我们所需的权限 例如
  • 一个人可以在 Magento 社区版上托管多个商店吗?

    一个人可以在 Magento 社区版上托管多个商店吗 以及如何在设置每个新商店时自动为其创建子域 是的 您可以从 Magento 社区版运行多个站点 Magento 官方博客实际上刚刚发布了一篇关于此问题的帖子 您可能想查看一下 http
  • 我尝试实施 UPSERT 时出现问题

    我在检查更新 PostgreSQL 中的表的条件时遇到此问题 它必须检查用户是否下载过一次 如果是 则添加 1acessos
  • 如何从任何地方获取上下文? [复制]

    这个问题在这里已经有答案了 在Android中 有什么方法可以静态获取应用程序的上下文吗 例如从后台线程检索它 Thanks 最简单 也是正确 的方法是 定义一个新类 public class MyApp extends Applicati
  • hibernate查询语言还是使用条件?

    任何人告诉我使用 criteria hql sql 进行查询 要求是用户输入电子邮件或用户名 查询返回密码 来自表用户的用户 Criteria API 非常适合动态查询生成 并且是我的首选 你可以这样做 Criteria criteria
  • Git/Mercurial (hg) 意见 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 首先声明 我不是一个专业的程序员 而是一个有需要并且必须学习的工程师 我总是独自工作 所以只有我和我的七个分裂人格 我们作为一个团队工
  • 如何使用struts 2标签比较列表元素(字符串类型)和字符串(在请求范围内)

    我的列表包含 A B C D 元素
  • 如何监听 Firebase 中的特定值变化?

    My data structure is the following compliments received uid complimentId 我想听听有关恭维 已收到 uid complimentId updatedAt 的更改 我的代
  • 如何使JComboBox表格编辑器具有普通JComboBox的设计?

    我有一个JComboBox用作编辑器JTable 在图片中 您可以在标记的列中看到它们Produs 我想使用独立的设计JComboBox在网格单元中 特别是组合框的右侧部分 其中网格单元中缺少三角形 因此用户无需单击其中之一即可知道网格单元
  • 如何从具有相同签名的方法或扩展函数调用顶级函数?

    我使用科特林1 1 2 2 我想调用顶层函数plus100 Int Int从方法Mul2 plus100 Int Int 我尝试在下面的代码中执行此操作 但实际上Mul2 plus100本身被称为 class Mul2 fun plus10
  • Objective-C 属性表达式的地址

    我需要财产的访问地址 但有问题 示例代码是 interface Rectangle NSObject SDL Rect wall SDL Rect ground property SDL Rect wall property SDL Rec
  • WidgetKit @StateObject 不更新视图

    我无法理解如何让我的SwiftUI数据模型示例与我的小部件一起使用 它在我的测试应用程序中运行得很好 我立即观察到变化 当我尝试使用小部件时 我可以看到控制台中打印的数据 但我的中没有发生任何变化View in WidgetKit 我正在使
  • 错误:列表类型不带参数

    尽管它与示例中使用的完全相同 但我收到以下错误 错误 列表类型不带参数 List
  • NODEJS writeStream 错误

    var http require http var fs require fs createWriteStream file1 http createServer function req res This opens up the wri
  • 批量获取消息性能

    我需要获取收件箱中的最后 100 条消息 仅限标题 为此 我目前正在使用 IMAP 扩展来搜索并获取消息 这是通过两个请求完成的 SEARCH进而UID FETCH Gmail API 相当于在一个请求中获取多封邮件的功能是什么 我能找到的
  • 为什么 SDWebImage 加载后在单元格中不显示图像?

    我正在使用 SDWebImage 在我的表格中 每一行都有图像和标签 如您所见 图像看不到 但是当我返回父视图控制器并再次来到这里时 它们就会显示出来 我正在使用的代码是 cell imageView setImageWithURL NSU
  • 如何自动连续垂直滚动div内容

    我需要垂直滚动包含图像的 div 任何帮助或参考将不胜感激 Maybe 像这样的东西 http jsfiddle net 9qC9E 8 有助于 第一张和最后一张图像应该是相同的 JS function var box document g
  • Django REST Framework,PUT/POST 序列化程序数据消失

    当我尝试更新或发布新实例时 我遇到部分数据消失的问题 有了这样的数据 data item Product station Workbench ingredients item ing1 amount 2 item ing2 amount 1
  • auth-hmac功能测试问题

    我想在我的 api 应用程序中使用这个 gemhttps github com seangeo auth hmac https github com seangeo auth hmac 我有一个关于创建请求身份验证测试的问题 我想用 hma