È possibile verificare il dominio in cui è stato impostato un cookie per l'utilizzo dei test di integrazione di Rails?
-
05-07-2019 - |
Domanda
Sto usando la seguente tecnica per impostare un cookie jolly per il nostro dominio:
cookies['root_domain_flash_warning'] = {
'value' => 'mistakes have been made!',
'domain' => ".#{APP_DOMAIN}",
'expires' => 2.minutes.from_now
}
Che sembra funzionare comodamente. Sfortunatamente non riesco a cercare altro che il valore associato alla chiave 'value' nell'hash passato a CookieJar # [] = a causa del fatto che CookieJar # [] non restituisce effettivamente le opzioni che l'hash passato al suo metodo reciproco.
Qualcuno sa come verificare il dominio per cui è stato impostato un cookie in un test funzionale?
Soluzione
È possibile verificare il valore dell'intestazione Set-Cookie
a cui è possibile accedere in @ response.headers ['Set-Cookie']
.
Prova qualcosa del genere:
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
Purtroppo non è possibile estrarre questi valori dal metodo cookies
. Nel sorgente ActionController :: Integration :: Session # process
( actionpack / lib / action_controller / integration.rb
), i cookie del test di integrazione sono processi come di seguito, che estrae solo la parte value
dell'hash di input:
(@headers['Set-Cookie'] || "").split("\n").each do |cookie|
name, value = cookie.match(/^([^=]*)=([^;]*);/)[1,2]
@cookies[name] = value
end