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

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
}

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

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

Это было полезно?

Решение

Вы можете проверить значение заголовка 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 /gration.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