Для тестирования данного API я должен проверить запрос с точной строки запроса, потому что вся QueryString хешируется вместе с общим секретом для безопасности, какКак я могу протестировать запрос с буквальным заданным запросом?
inject?a=1&b[a]=2&b[b]=3&d=4&sign=76c8abec496a5e6c8a51c57e231e3a62612aeff0
я могу видеть только способ дать параметры, хэш, который не обеспечивает порядок (по крайней мере, если это вложенный хэш):
test "right signature injects" do
get :inject, a:1 , b: {a:2, b:3}, d: 4, sign: '76c8abec496a5e6c8a51c57e231e3a62612aeff0'
assert_response :success
end
Как я могу проверить запрос GET с точной строкой запроса?
Запрограммированная строка до символа & sign =. только когда хеш правилен, контроллер должен принять меры. Изменение порядка параметров изменяет хэш. – hoeni
Я предполагаю, что вам нужна переменная знака для декодирования хэша? Если это нужно хэшировать, почему бы вам не хешировать его в своем тесте? Если это будет что-то вроде: get: inject, hash: xyz, sign: abc – JamesMacLeod
Отправитель запроса вычисляет знак как sha1 ("a = 1 & b [a] = 2 & b [b] = 3 & d = 4" + secret) и добавляет его в качестве последнего элемента в строку запроса. Чтобы проверить, я должен вычислить md5 в точном запросе в его отправленном заказе. – hoeni