2013-07-25 3 views
0

Для тестирования данного 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 с точной строкой запроса?

ответ

0

Почему заказ имеет значение? Если вы передаете переменные GET, неужели заказ не имеет значения? Я не вижу причин, по которым ваш тест не должен делать то, что вам нужно, если в контроллере нет ответа, который отвечает на этот запрос.

+0

Запрограммированная строка до символа & sign =. только когда хеш правилен, контроллер должен принять меры. Изменение порядка параметров изменяет хэш. – hoeni

+0

Я предполагаю, что вам нужна переменная знака для декодирования хэша? Если это нужно хэшировать, почему бы вам не хешировать его в своем тесте? Если это будет что-то вроде: get: inject, hash: xyz, sign: abc – JamesMacLeod

+0

Отправитель запроса вычисляет знак как sha1 ("a = 1 & b [a] = 2 & b [b] = 3 & d = 4" + secret) и добавляет его в качестве последнего элемента в строку запроса. Чтобы проверить, я должен вычислить md5 в точном запросе в его отправленном заказе. – hoeni

Смежные вопросы