在我们对 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 代码有什么问题?感谢帮助。