Authlogic と ActiveRecord SessionStore を使用する Rails 3.1 アプリケーションで簡単な統合テストを作成しようとしていますが、壁にぶつかっています。
最初に、私は古典的なアプローチを試みました:require "authlogic/test_case"
回線が既に存在することを確認した後、セッションを作成するためにtest_helper.rb
呼び出しactivate_authlogic
て使用するセットアップ メソッドを作成しました。UserSession(@user)
これによりセッションが作成されましたが ( で証明されているようにUserSession.find
)、get
保護されたリソースで要求を実行すると、応答はログイン フォームへのリダイレクトとなり、セッションは強制終了されました (つまり、UserSession.find
が返されますnil
) 。
メール/パスワードもPOSTしてみましたが、セッションストアをcookie_storeに戻した場合にのみ機能するようです(このコメントから見つけたもの)。
テストのためだけにセッション ストアを切り替えるCookieStore
ことはオプションですが、既に ActiveRecord ストアに依存しているいくつかのテストがあります。
1 回のテストのためだけにセッション ストアを切り替える方法はありますか? 私が見逃しているこの問題に対する他の解決策はありますか?
require 'test_helper'
class ProtectedTest < ActionController::IntegrationTest
def setup
activate_authlogic
@user = Factory(:user, :roles => 'user')
UserSession.create(@user)
end
def test_protected
https!
get '/protected'
assert_response :success
end
end