Ist es möglich, die Domain zu überprüfen, ob ein Cookie für die Verwendung von Rails Integrationstests festgelegt wurde?
-
05-07-2019 - |
Frage
Ich verwende die folgende Technik eine Wild-Card-Cookie für unsere Domäne zu setzen:
cookies['root_domain_flash_warning'] = {
'value' => 'mistakes have been made!',
'domain' => ".#{APP_DOMAIN}",
'expires' => 2.minutes.from_now
}
Welche scheint handlich zu arbeiten. Leider scheine ich kann nicht mit dem ‚Wert‘ Schlüssel in der Hash übergeben CookieJar # [] = wegen der Tatsache, dass CookieJar # [] nicht wirklich die Optionen zurück Hash zugeordnet alles andere als der Wert suchen weitergegeben seine reziproke Verfahren.
Kennt jemand eine Möglichkeit, die Domäne der Überprüfung ein Cookie in einem Funktionstest festgelegt wurde?
Lösung
Sie können den Wert des Set-Cookie
Header überprüfen, die in @response.headers['Set-Cookie']
zugegriffen werden kann.
Versuchen Sie etwas in dieser Richtung:
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
Sie können diese Werte nicht aus der cookies
Methode extrahieren, leider. In der ActionController::Integration::Session#process
Quelle (actionpack/lib/action_controller/integration.rb
), die Integrationstest Cookies Prozesse sind als unten, die nur extrahiert den value
Teil des Eingangs hash:
(@headers['Set-Cookie'] || "").split("\n").each do |cookie|
name, value = cookie.match(/^([^=]*)=([^;]*);/)[1,2]
@cookies[name] = value
end