Rails 3.2.12アプリの統合テストには、管理者のみが実行する権利を持つ新しいユーザーの作成ページを開くためのテストケースがあります。これが私たちのrspecケース(capybaraを使用)です。
it "should have login field in create new user page" do
ul = FactoryGirl.build(:user_level, :position => 'admin')
@user = FactoryGirl.create(:user, :login => 'test12', :password => 'password', :password_confirmation => 'password', :user_levels => [ul])
visit '/'
fill_in "login", :with => @user.login
fill_in "password", :with => 'password'
click_button 'Login'
visit new_user_path
page.body.should have_content("New User")
end
ユーザー位置「admin」は、ユーザーに属するuser_levelsで定義されます。上記のrspecの場合は、ログインして[新しいユーザーの作成]ページを開きます。
ユーザーコントローラーには、ユーザーがadminであるかどうかを確認するbefore_filterがあります。
before_filter :require_admin
奇妙なことに、上記のrspecの場合、ユーザーに管理者以外の位置を割り当てても、ケースは通過します。before_filter require_adminは、管理者以外のユーザーが統合テストで新しいユーザーの作成ページを開くのを停止できないようです。
上記のrpsecコードの何が問題になっている可能性がありますか?手伝ってくれてありがとう。