Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Karate 如何处理空手道测试中的签名请求?_Karate - Fatal编程技术网

Karate 如何处理空手道测试中的签名请求?

Karate 如何处理空手道测试中的签名请求?,karate,Karate,首先,感谢构建空手道,它对于测试API和UI非常有用。我们正在使用它来测试我们的许多端点,但是我们想知道是否有一种方法,或者哪种方法是最好的方法来处理带有签名的请求,并将其作为头中请求的一部分 在本例中,我们有两个标题: ApiKey:此值始终相同 签名:此值取决于请求正文内容 是否有任何方法可以在根据请求正文内容执行请求之前注入签名值 在这里,您可以看到两个请求示例 样本1: * url 'https://dev.sample.com' * path '/api/user/ge

首先,感谢构建空手道,它对于测试API和UI非常有用。我们正在使用它来测试我们的许多端点,但是我们想知道是否有一种方法,或者哪种方法是最好的方法来处理带有签名的请求,并将其作为头中请求的一部分

在本例中,我们有两个标题:

  • ApiKey:此值始终相同
  • 签名:此值取决于请求正文内容
是否有任何方法可以在根据请求正文内容执行请求之前注入签名值

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

样本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    
感谢您

空手道有一个用于生成标题的“钩子”,但到目前为止,它还没有“意识到”当前构建的请求主体+标题:

我们在这里收到了类似的请求,正在考虑添加此功能:

也许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以后的版本中实现:

感谢您的快速回答。我们希望帮助测试新功能,以便创建增强请求;)。