Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
Ruby on rails 如何使用给定的查询字符串测试请求?_Ruby On Rails_Testing_Get_Query String - Fatal编程技术网

Ruby on rails 如何使用给定的查询字符串测试请求?

Ruby on rails 如何使用给定的查询字符串测试请求?,ruby-on-rails,testing,get,query-string,Ruby On Rails,Testing,Get,Query String,为了测试一个给定的API,我必须用一个精确的querystring测试一个请求,因为整个querystring都是用一个共享的安全秘密散列在一起的,比如 inject?a=1&b[a]=2&b[b]=3&d=4&sign=76c8abec496a5e6c8a51c57e231e3a62612aeff0 我只能看到一种以散列形式给出参数的方法,这种方法不能确保顺序(如果是嵌套散列,至少不能): 如何使用精确的查询字符串测试get请求?为什么顺序会有所不同?如果您正

为了测试一个给定的API,我必须用一个精确的querystring测试一个请求,因为整个querystring都是用一个共享的安全秘密散列在一起的,比如

inject?a=1&b[a]=2&b[b]=3&d=4&sign=76c8abec496a5e6c8a51c57e231e3a62612aeff0
我只能看到一种以散列形式给出参数的方法,这种方法不能确保顺序(如果是嵌套散列,至少不能):


如何使用精确的查询字符串测试get请求?

为什么顺序会有所不同?如果您正在传递GET变量,那么顺序肯定不重要吗?
除非控制器中有响应此请求的内容,否则我看不出您的测试不应该执行所需操作的任何原因。

查询字符串直到&sign=散列。只有当散列正确时,控制器才应采取行动。更改参数的顺序会更改哈希。我猜您需要符号变量来解码哈希?如果它需要散列,为什么不在测试中散列?如果它类似于:get:inject,hash:xyz,sign:abc请求的发送方将sign计算为sha1(“a=1&b[a]=2&b[b]=3&d=4”+secret),并将其作为最后一项添加到查询字符串中。为了验证,我必须计算发送顺序中确切querystring上的md5。
test "right signature injects" do
  get :inject, a:1 , b: {a:2, b:3}, d: 4, sign: '76c8abec496a5e6c8a51c57e231e3a62612aeff0'
  assert_response :success
end