8

今日、Rails アプリの機能テストを書き始めました。RESTful 認証プラグインを使用しています。私はいくつかの紛らわしいことに遭遇しました.誰かが私のために明確にしてくれることを願っています.

1) Rails アプリのほとんどの機能で認証が必要なため、クイック ログイン機能を作成しました。

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

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

4

1 に答える 1

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

フォローアップのために私に連絡してください!

于 2009-05-16T01:46:50.747 に答える