0

在我们对 rails 3.2.12 应用程序的集成测试中,有一个测试用例可以打开只有管理员有权执行的创建新用户页面。这是我们通过的 rspec 案例(带有水豚):

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 案例所做的是登录并打开创建新用户页面。

在用户控制器中,有一个 before_filter 来检查用户是否是管理员:

before_filter :require_admin 

奇怪的是,如果我们在上面的 rspec 案例中为用户分配非管理员职位,案例仍然通过。似乎 before_filter require_admin 无法阻止非管理员用户在集成测试中打开创建新用户页面。

上面的 rpsec 代码有什么问题?感谢帮助。

4

0 回答 0