如何使用rspec测试declarative_authorization

时间:2010-03-29 18:17:42

标签: ruby-on-rails rspec declarative-authorization

有没有办法测试declarative_authorization权限?

在文档中它有一些使用测试单元的说明,但我似乎找不到使用rspec的方法。

3 个答案:

答案 0 :(得分:2)

是的,您可以测试权限。请参阅Authorization :: TestHelper下的here - 在spec_helper文件中需要帮助程序,并包含Authorization :: TestHelper。这提供了一些方法,允许您在rspec的before方法中指定当前用户及其权限。

另一个提示:为了更容易创建工厂对象,declarative_authorization有一个without_access_control方法,允许您绕过before部分的授权。

答案 1 :(得分:1)

我设法用黄瓜来测试角色。

像这样:

require 'machinist/active_record'
require 'spec/blueprints.rb'

def user  
  @user ||= User.make
end

Given /^I am an Administrator$/ do
  user
  @user.assignments.delete_all
  @user.roles.delete_all
  @user.assignments << Assignment.create(:user_id => @user.id,
                   :role_id =>  Role.find_by_name("admin").id)
  @user.roles.count.should == 1
  @user.roles << Role.find_by_name("admin")  
  Authorization.current_user = @user
end

答案 2 :(得分:0)

您可以在rspec中使用所有断言,因此您可以使用它或以rpsec样式转换它。