È possibile verificare il dominio in cui è stato impostato un cookie per l'utilizzo dei test di integrazione di Rails?

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

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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top