gpt4 book ai didi

karate - 如何处理带有 Karate 测试签名的请求?

转载 作者:行者123 更新时间:2023-12-04 03:46:51 25 4
gpt4 key购买 nike

首先,感谢 build karate,它对测试 API 和 UI 非常有用。我们正在使用它来测试我们的许多端点,但我们想知道是否有一种方法或哪种方法是处理 header 中包含签名的请求的最佳方法。

在我们的例子中,我们有两个 header :

  • ApiKey:此值始终相同
  • Signature:这个值取决于请求体内容

有没有办法根据请求体内容在请求执行前注入(inject)签名值?

在这里你可以看到两个请求示例

示例 1:

   * url 'https://dev.sample.com'
* path '/api/user/getAll'
* header Content-Type = 'application/json'
* header ApiKey = 'XXX'
* header Signature = 'YYY'
And request { }
When method POST
Then status 200

示例 2:

   * url 'https://dev.sample.com'
* path '/api/user/getAll'
* header Content-Type = 'application/json'
* header ApiKey = 'XXX'
* header Signature = 'ZZZ'
And request { name: 'John' }
When method POST
Then status 200

谢谢

最佳答案

Karate 有一个用于生成 header 的“钩子(Hook)”,但截至目前它还没有“意识到”当前构建的请求正文+ header :https://github.com/intuit/karate#configure-headers

我们在这里收到了类似的请求,正在考虑添加此功能:How to retrieve raw request contents before making a REST call in Karate DSL?

也许 OAuth 示例会为您提供当前案例的前进方向:https://stackoverflow.com/a/55055111/143475

请随时提出增强请求,我们可以将其纳入下一个版本(在您的帮助下进行测试)。我在想 - 如果您能够从 header JS 函数中调用 karate.get('request') 会怎么样。

但是现在你需要做的就是做这样的事情:

* def body = { some: 'json' }
* karate.set('requestBody', body)
* url someUrl
* request body
* method post

并且在header.js函数中

function fn() {
var body = karate.get('requestBody');
var sign = Utils.sign(body);
return { Signature: sign };
}

编辑:这将在 Karate 1.0 之后实现:https://github.com/intuit/karate/issues/1385

关于karate - 如何处理带有 Karate 测试签名的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65018596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com