Ist es möglich, die Domain zu überprüfen, ob ein Cookie für die Verwendung von Rails Integrationstests festgelegt wurde?

StackOverflow https://stackoverflow.com/questions/1203605

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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top