Можно ли проверить домен, в котором был установлен файл cookie, с помощью интеграционных тестов Rails? - PullRequest
1 голос
/ 30 июля 2009

Я использую следующую технику для установки файла cookie с подстановочными знаками для нашего домена:

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

Что, кажется, работает легко. К сожалению, я не могу ничего искать, кроме значения, связанного с ключом 'value' в хэше, переданного CookieJar # [] =, потому что CookieJar # [] фактически не возвращает хэш опций, переданный взаимный метод.

Кто-нибудь знает способ проверки домена, для которого был установлен cookie в функциональном тесте?

1 Ответ

0 голосов
/ 07 августа 2009

Вы можете проверить значение заголовка Set-Cookie, к которому можно получить доступ в @response.headers['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
...