Karate 如何处理空手道测试中的签名请求?
首先,感谢构建空手道,它对于测试API和UI非常有用。我们正在使用它来测试我们的许多端点,但是我们想知道是否有一种方法,或者哪种方法是最好的方法来处理带有签名的请求,并将其作为头中请求的一部分 在本例中,我们有两个标题:Karate 如何处理空手道测试中的签名请求?,karate,Karate,首先,感谢构建空手道,它对于测试API和UI非常有用。我们正在使用它来测试我们的许多端点,但是我们想知道是否有一种方法,或者哪种方法是最好的方法来处理带有签名的请求,并将其作为头中请求的一部分 在本例中,我们有两个标题: ApiKey:此值始终相同 签名:此值取决于请求正文内容 是否有任何方法可以在根据请求正文内容执行请求之前注入签名值 在这里,您可以看到两个请求示例 样本1: * url 'https://dev.sample.com' * path '/api/user/ge
- ApiKey:此值始终相同
- 签名:此值取决于请求正文内容
* 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
感谢您空手道有一个用于生成标题的“钩子”,但到目前为止,它还没有“意识到”当前构建的请求主体+标题:
我们在这里收到了类似的请求,正在考虑添加此功能:
也许OAuth示例将为您提供当前案例的前进方向:
请随时提出增强请求,我们可以将其升级到下一个版本(在您的帮助下进行测试)。我在想-如果您能够在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以后的版本中实现:感谢您的快速回答。我们希望帮助测试新功能,以便创建增强请求;)。