8

今日、私のレールアプリケーションの機能テストを書き始めました。私はRESTful認証プラグインを使用します。私は誰かが私のために明確にできることを願って、混乱しているものをいくつか試しました。RESTful認証プラグインを使用したRuby on Rails機能テスト

1)私のレールアプリの機能のほとんどが認証を必要とするため、クイックログイン機能を書いています。

def login_as(user) 
    @request.session[:user_id] = user ? user.id : nil 
end 

私がこの機能で見る問題は、基本的には偽認証です。私はこれについて心配すべきですか?本当の認証方法をどこかでテストしている限り、このルートに行くのは大丈夫です。あるいは、これはひどい練習です。

2)第2の混乱は、私の機能テストのいくつかの場所で、私は完全な認証プロセスが必要であるということです。ユーザーがアクティブになると、do_activateメソッドでユーザーの初期オブジェクトを作成します。それは意味をなさないならば、生徒用アプリケーションのための空白のノートブックオブジェクトとペンオブジェクトの作成に似ています。

私のアプリケーションを適切にテストするためには、ユーザーがそのアクティベーション状態をヒットしてそれらのオブジェクトを作成する必要があります。私は現在、Factory Girlを使ってユーザーを作成し、上記のlogin_as関数を呼び出して認証を偽装しています。

もう1つの選択肢は、完全な認証シーケンスをスキップし、Factory Girlで空白のオブジェクトを作成することです。私は他のどこかで正しい認証をテストすることができました。

あなたはどう思いますか?適切なシーケンスを実行する必要がある場合、以下のコードでdo_activate関数を呼び出すのはなぜですか?

user = Factory.create(:user) 
user.active = 1 
user.save 

ありがとうございました!

+0

[これは私が尋ねた類似の質問です](http://stackoverflow.com/questions/64827/rails-restful-authentication-rspec-how-to-test-new-models-that-require-authen)私は一緒に引っ張ったリンクの束。 – srboisvert

答えて

7

偽造は完全に許容可能です。

ただし、保護する必要があるものが保護されていることを確認するための他のテストを作成してください。だから

test "it should show the profile page" do 
    user = Factory(:user) 
    login_as(user) 
    get :show, :id => user 
    assert_response :success 
end 

test "it should not show the profile page cos I'm not logged in" do 
    user = Factory(:user) 
    get :show, :id => user 
    assert_response :redirect 
end 

私はフォローアップのために私を打つ気軽に!

関連する問題