Est-il possible de vérifier le domaine qu'un cookie a été configuré pour utiliser les tests d'intégration Rails?
-
05-07-2019 - |
Question
J'utilise la technique suivante pour définir un cookie générique pour notre domaine:
cookies['root_domain_flash_warning'] = {
'value' => 'mistakes have been made!',
'domain' => ".#{APP_DOMAIN}",
'expires' => 2.minutes.from_now
}
Ce qui semble fonctionner facilement. Malheureusement, je n'arrive pas à chercher quoi que ce soit, mais la valeur associée à la clé 'value' dans le hachage transmis à CookieJar # [] = en raison du fait que CookieJar # [] ne renvoie pas réellement le hachage des options passé à son méthode réciproque.
Quelqu'un connaît-il un moyen de vérifier le domaine pour lequel un cookie a été défini lors d'un test fonctionnel?
La solution
Vous pouvez vérifier la valeur de l'en-tête Set-Cookie
accessible dans @ response.headers ['Set-Cookie']
.
Essayez quelque chose dans ce sens:
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
Malheureusement, vous ne pouvez pas extraire ces valeurs de la méthode cookies
. Dans la source ActionController :: Integration :: Session # process
( actionpack / lib / action_controller / integration.rb
), les cookies de test d'intégration sont des processus décrits ci-dessous, que seuls extraits. la partie valeur
du hachage d'entrée:
(@headers['Set-Cookie'] || "").split("\n").each do |cookie|
name, value = cookie.match(/^([^=]*)=([^;]*);/)[1,2]
@cookies[name] = value
end