我正在使用Rails 3.1.0.rc4,我正在與水豚的新牛排般的DSL和Rspec(使用設計認證)進行集成測試Rails - 集成測試和Capybara丟失會話 - CSRF相關?
我遇到的問題是,當我跑一個集成測試,來自水豚的機架測試驅動程序似乎完全失去了用戶的登錄會話,事實上,該會話似乎只是完全清除。
經過幾天的調試,我完全喪失了原因。通過中間件堆棧一行接一行,我相信我已經排除了這個問題,因爲ActiveRecord::SessionStore
正在導致這個問題。我已閱讀here,如果Rails將無法驗證CSRF令牌,則會清除會話,這使我相信我的某些配置錯誤,並且出於某種原因,這一個測試未正確驗證CSRF令牌。
這是在我的session_store.rb在/初始化目錄:
MyApp::Application.config.session_store :active_record_store
有誰誰在軌知道CSRF保護對爲什麼這可能會發生的任何線索?
另外,這裏有一些事情需要注意:
- 我想實際測試的事情的作品在瀏覽器本身,僅這一項測試丟棄會話
- 會議似乎得到在將動作url提交給另一個服務器的表單提交後丟棄。我正在使用VCR gem來捕獲測試中對這個外部服務器的請求/響應,雖然我認爲我已經將外部請求作爲問題來處理,但這可能與CSRF令牌沒有進行身份驗證有直接關係,從而清除會話。
- 涉及使用會話登錄/其他測試不會放棄會話
誰能給我任何線索,什麼是究竟怎麼回事,爲什麼一個測試似乎只是隨意放棄自己的會話和失敗包在我身上?我已經做了很多調試,並嘗試了所有我能想到的事情。
我有同樣的問題... ARGH ... – Lichtamberg