Я использую Rails 3.1.0.rc4 и работаю над интеграционными тестами с новыми Steak-подобными DSL и Rspec от Capybara (с использованием аутентификации Devise)
У меня проблема в том, чтокогда я запускаю интеграционный тест, драйвер стоечного теста из капибары, похоже, просто полностью теряет пользователя, вошедшего в сеанс, фактически, сеанс, кажется, просто полностью очищается.
После нескольких дней отладки ям в полной растерянности относительно того, почему.Идя построчно через стек промежуточного программного обеспечения, я полагаю, что я решил проблему до того, что происходит в ActiveRecord::SessionStore
, что вызывает это.Я прочитал здесь , что Rails очистит сессию, если не сможет проверить токен CSRF, что заставляет меня поверить, что я что-то настроил неправильно, и по какой-то причине этот тестнеправильно аутентифицирует токен CSRF.
Это то, что находится в моем файле session_store.rb в каталоге / initializers:
MyApp::Application.config.session_store :active_record_store
Есть ли у кого-нибудь, кто знает о защите CSRF в рельсах,почему это может происходить?
Также обратите внимание на некоторые вещи:
- вещь, которую я пытаюсь протестировать, на самом деле работает в самом браузере, только один этот тест сбрасывает сессию
- кажется, что сеанс прерывается после отправки формы, к которой URL-адрес действия относится к другому серверу.Я использую гем VCR для захвата запросов / ответов на этот внешний сервер в тесте, и хотя я считаю, что я управлял внешним запросом как проблемой, это может иметь непосредственное отношение к тому, что токен CSRF не аутентифицируется,таким образом очищая сеанс.
- другие тесты, включающие вход в систему / использование сеансов, не отбрасывают сеансы
Может кто-нибудь дать мне какие-либо указания относительно того, что именно здесь происходит, и почемукажется, что один тест произвольно отбрасывает свою сессию и проваливается на мне?Я сделал много отладок и перепробовал все, что только мог придумать.