-
Notifications
You must be signed in to change notification settings - Fork 7
/
role_group_spec.rb
96 lines (74 loc) · 2.21 KB
/
role_group_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
require 'spec_helper'
require 'fixtures/models'
CanTango.configure do |config|
config.permission_engine.set :off
config.permit_engine.set :on
config.categories.register :blog_items => [Article, Post]
end
class AdminsRoleGroupPermit < CanTango::Permit::RoleGroup
def initialize ability
super
end
protected
def calc_rules
can :publish, Post
can :write, Article
can :write, category(:blog_items)
end
end
class EditorsRoleGroupPermit < CanTango::Permit::RoleGroup
def initialize ability
super
end
protected
def calc_rules
can :publish, category(:blog_items)
end
end
describe CanTango::Filter::RoleGroup do
describe 'role groups filter - exclude :admins' do
let (:user) do
User.new 'stan', 'stan@gmail.com'
end
let (:user_account) do
ua = UserAccount.new user, :roles => [:user, :admin], :role_groups => [:admins]
user.account = ua
end
before do
CanTango.config.role_groups.exclude :admins
CanTango.config.categories.register :blog_items => [Article, Post]
@ability = CanTango::Ability.new user_account
end
after do
CanTango.config.clear!
end
subject { @ability }
specify { @ability.should be_allowed_to(:read, Post)}
specify { @ability.should_not be_allowed_to(:read, Comment)}
specify { @ability.should_not be_allowed_to(:write, Article)}
end
end
describe CanTango::Filter::RoleGroup do
describe 'role groups filter- only :admins' do
let (:user) do
User.new 'stan', 'stan@gmail.com'
end
let (:user_account) do
ua = UserAccount.new user, :roles => [:user, :admin], :role_groups => [:admins, :editors]
user.account = ua
end
before do
CanTango.config.categories.register :blog_items => [Article, Post]
CanTango.config.role_groups.only :admins
@ability = CanTango::Ability.new user_account
end
after do
CanTango.config.clear!
end
subject { @ability }
specify { @ability.should be_allowed_to(:read, Comment)}
specify { @ability.should be_allowed_to(:write, Article)}
specify { @ability.should be_allowed_to(:publish, Post)}
specify { @ability.should_not be_allowed_to(:publish, Article)}
end
end