如何处理带有空手道测试签名的请求?
How to handle requests with signatures on karate tests?
首先,感谢构建空手道,它对测试 API 和 UI 非常有用。我们正在使用它来测试我们的许多端点,但我们想知道是否有一种方法或哪种方法是处理带有签名的请求的最佳方法作为 header.[=12= 请求的一部分]
在我们的例子中,我们有两个 header:
- ApiKey: 这个值总是一样的
- 签名:这个值取决于请求body内容
有没有办法根据请求body内容在请求执行前注入签名值?
在这里您可以看到两个请求示例
示例 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
谢谢
空手道有一个用于生成 headers 的“钩子”,但截至目前它还没有“意识到”当前构建的请求 body + headers:https://github.com/intuit/karate#configure-headers
我们在这里收到了类似的请求,正在考虑添加此功能:How to retrieve raw request contents before making a REST call in Karate DSL?
也许 OAuth 示例可以为您提供当前案例的前进方向:https://whosebug.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 };
}
编辑:这将在空手道 1.0 之后实现:https://github.com/intuit/karate/issues/1385
首先,感谢构建空手道,它对测试 API 和 UI 非常有用。我们正在使用它来测试我们的许多端点,但我们想知道是否有一种方法或哪种方法是处理带有签名的请求的最佳方法作为 header.[=12= 请求的一部分]
在我们的例子中,我们有两个 header:
- ApiKey: 这个值总是一样的
- 签名:这个值取决于请求body内容
有没有办法根据请求body内容在请求执行前注入签名值?
在这里您可以看到两个请求示例
示例 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
谢谢
空手道有一个用于生成 headers 的“钩子”,但截至目前它还没有“意识到”当前构建的请求 body + headers:https://github.com/intuit/karate#configure-headers
我们在这里收到了类似的请求,正在考虑添加此功能:How to retrieve raw request contents before making a REST call in Karate DSL?
也许 OAuth 示例可以为您提供当前案例的前进方向:https://whosebug.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 };
}
编辑:这将在空手道 1.0 之后实现:https://github.com/intuit/karate/issues/1385