2009-07-29 7 views
1

Ich verwende die folgende Technik eine Wild-Card-Cookie für unsere Domäne zu setzen:Kann die Domain, für die ein Cookie zur Verwendung von Rails-Integrationstests festgelegt wurde, überprüft werden?

cookies['root_domain_flash_warning'] = { 
    'value' => 'mistakes have been made!', 
    'domain' => ".#{APP_DOMAIN}", 
    'expires' => 2.minutes.from_now 
} 

Welche handlich zu funktionieren scheint. Leider kann ich nichts anderes als den Wert sehen, der mit dem Schlüssel 'value' in dem an CookieJar # [] = übergebenen Hash verbunden ist, da CookieJar # [] nicht die Optionen zurückgibt, die an seinen übergebenen Hash übergeben wurden reziproke Methode.

Kennt jemand eine Methode zur Überprüfung der Domäne, für die ein Cookie in einem Funktionstest festgelegt wurde?

Antwort

0

Sie könnten den Wert der Set-Cookie-Kopfzeile überprüfen, auf die in @response.headers['Set-Cookie'] zugegriffen werden kann.

versuchen, etwas in diese 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 aus der cookies Methode extrahieren, leider. In der ActionController::Integration::Session#process Quelle (actionpack/lib/action_controller/integration.rb), wobei die Integrationstest Cookies Prozesse sind wie 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 
Verwandte Themen