Rails統合テストを使用するためにCookieが設定されているドメインを検証することは可能ですか?

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

質問

次の手法を使用して、ドメインのワイルドカードCookieを設定しています:

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

これは便利に機能するようです。残念ながら、CookieJar#[] =は実際に渡されるオプションハッシュを返さないため、CookieJar#[] =に渡されるハッシュの 'value'キーに関連付けられた値以外は検索できないようです。相互メソッド。

機能テストでCookieが設定されているドメインを確認する方法を知っている人はいますか?

役に立ちましたか?

解決

@ response.headers ['Set-Cookie'] でアクセスできる Set-Cookie ヘッダーの値を確認できます。

これらの線に沿って何かを試してください:

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

残念ながら、これらの値を cookies メソッドから抽出することはできません。 ActionController :: Integration :: Session#process ソース( actionpack / lib / action_controller / integration.rb )では、統合テストCookieは以下のようなプロセスであり、抽出のみ入力ハッシュの value 部分:

(@headers['Set-Cookie'] || "").split("\n").each do |cookie|
  name, value = cookie.match(/^([^=]*)=([^;]*);/)[1,2]
  @cookies[name] = value
end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top