tengo un cierto código que incrusta una URL return_to
en una redirección (como OpenID) que yo quiero hacer la prueba:¿Cómo puedo analizar fácilmente una URL con parámetros en una prueba de Rails?
def test_uses_referrer_for_return_to
expected_return_to = 'http://test.com/foo'
@request.env['HTTP_REFERER'] = expected_return_to
get :fazbot
# @response.redirected_to looks like http://service.com?...&return_to=[URI-encoded version of URL above]&...
encoded_return_to = (something_here)[:return_to]
assert_equal expected_return_to, URI.unencode(encoded_return_to)
end
Es un Rieles ActionController::TestCase
, así que tengo acceso a todo tipo de métodos de ayuda; Simplemente no puedo encontrar el correcto.
Por supuesto que podría utilizar para obtener URI.parse
la parte params de la URL, luego se dividió en /&|?/
y luego se divide otra vez en '='
, pero espero que esto ya está hecho para mí. Además, ¿qué pasa si omito alguna regla oscura en el escape de URL o en el análisis de parámetros? No tiene para ser algo en ActionPack
o ActiveSupport
para hacer esto, pero no puedo encontrarlo.
Gracias :)
CGI :: parse ajusta todos los valores en una matriz. +1 para Rack :: Utils.parse_query – zaius
CGI :: el análisis maneja los caracteres incorrectos que a veces ve en las URL, el parse_query del rack fallará en {,}, ', ", ... –
Si ha anidado la consulta, pruébelo a 'Rack :: Utils.parse_nested_query (q)': 'Rack :: Utils.parse_nested_query 'foo = 1 & bar% 5Bbaz% 5D = baz'' =>' {"foo" => "1", "barra" => {"baz" => "baz"}} ' – sequielo