¿Es posible verificar el dominio para el que se configuró una cookie para usar las pruebas de integración de Rails?
-
05-07-2019 - |
Pregunta
Estoy usando la siguiente técnica para configurar una cookie comodín para nuestro dominio:
cookies['root_domain_flash_warning'] = {
'value' => 'mistakes have been made!',
'domain' => ".#{APP_DOMAIN}",
'expires' => 2.minutes.from_now
}
Que parece funcionar fácilmente. Desafortunadamente, parece que no puedo buscar nada más que el valor asociado con la clave 'value' en el hash pasado a CookieJar # [] = debido al hecho de que CookieJar # [] en realidad no devuelve el hash de opciones pasado a su método recíproco.
¿Alguien sabe de una forma de verificar el dominio para el que se ha establecido una cookie en una prueba funcional?
Solución
Puede verificar el valor del encabezado Set-Cookie
al que se puede acceder en @ response.headers ['Set-Cookie']
.
Pruebe algo en este sentido:
def test_something
get '/my_action'
assert_equal ["root_domain_flash_warning=mistakes+have+been+made!; domain=.mydomain.com; path=/; expires=Fri, 07-Aug-2009 11:42:21 GMT"], @response.headers['Set-Cookie']
end
Desafortunadamente, no puede extraer estos valores del método cookies
. En la fuente ActionController :: Integration :: Session # process
( actionpack / lib / action_controller / Integration.rb
), las cookies de prueba de integración son procesos que se detallan a continuación, que solo extrae la parte value
del hash de entrada:
(@headers['Set-Cookie'] || "").split("\n").each do |cookie|
name, value = cookie.match(/^([^=]*)=([^;]*);/)[1,2]
@cookies[name] = value
end