roles_active_record 0.2.5 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +13 -5
- data/Rakefile +13 -14
- data/VERSION +1 -1
- data/development.sqlite3 +0 -0
- data/lib/roles_active_record/role.rb +3 -0
- data/lib/roles_active_record/strategy/multi/many_roles.rb +38 -41
- data/lib/roles_active_record/strategy/multi/roles_mask.rb +22 -23
- data/lib/roles_active_record/strategy/multi.rb +54 -0
- data/lib/roles_active_record/strategy/shared.rb +26 -0
- data/lib/roles_active_record/strategy/single/admin_flag.rb +19 -18
- data/lib/roles_active_record/strategy/single/one_role.rb +35 -26
- data/lib/roles_active_record/strategy/single/role_string.rb +24 -19
- data/lib/roles_active_record/strategy/single.rb +34 -0
- data/roles_active_record.gemspec +54 -49
- data/spec/fixtures/many_roles_setup.rb +1 -1
- data/spec/fixtures/one_role_setup.rb +1 -1
- data/spec/migrations/many_roles/002_create_roles.rb +0 -1
- data/spec/migrations/roles_mask/005_add_roles_mask_to_users.rb +1 -1
- data/spec/roles_active_record/strategy/api.rb +214 -0
- data/spec/roles_active_record/strategy/api_examples.rb +213 -0
- data/spec/roles_active_record/strategy/multi/many_roles_spec.rb +27 -0
- data/spec/roles_active_record/strategy/multi/roles_mask_spec.rb +23 -0
- data/spec/roles_active_record/strategy/single/admin_flag_spec.rb +27 -0
- data/spec/roles_active_record/strategy/single/one_role_spec.rb +19 -0
- data/spec/roles_active_record/strategy/single/role_string_spec.rb +23 -0
- data/spec/roles_active_record/strategy/user_setup.rb +20 -0
- data/spec/spec_helper.rb +6 -1
- metadata +49 -63
- data/roles_for_ar.gemspec +0 -165
- data/spec/roles_active_record/admin_flag_spec.rb +0 -71
- data/spec/roles_active_record/many_roles_spec.rb +0 -69
- data/spec/roles_active_record/one_role_spec.rb +0 -68
- data/spec/roles_active_record/role_string_spec.rb +0 -68
- data/spec/roles_active_record/roles_mask_spec.rb +0 -68
data/roles_active_record.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{roles_active_record}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kristian Mandrup"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-11-20}
|
13
13
|
s.description = %q{Makes it easy to set a role strategy on your User model in Active Record}
|
14
14
|
s.email = %q{kmandrup@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -38,8 +38,11 @@ Gem::Specification.new do |s|
|
|
38
38
|
"lib/roles_active_record/namespaces.rb",
|
39
39
|
"lib/roles_active_record/role.rb",
|
40
40
|
"lib/roles_active_record/strategy.rb",
|
41
|
+
"lib/roles_active_record/strategy/multi.rb",
|
41
42
|
"lib/roles_active_record/strategy/multi/many_roles.rb",
|
42
43
|
"lib/roles_active_record/strategy/multi/roles_mask.rb",
|
44
|
+
"lib/roles_active_record/strategy/shared.rb",
|
45
|
+
"lib/roles_active_record/strategy/single.rb",
|
43
46
|
"lib/roles_active_record/strategy/single/admin_flag.rb",
|
44
47
|
"lib/roles_active_record/strategy/single/one_role.rb",
|
45
48
|
"lib/roles_active_record/strategy/single/role_string.rb",
|
@@ -47,7 +50,6 @@ Gem::Specification.new do |s|
|
|
47
50
|
"lib/views/_single_role_selector.erb.html",
|
48
51
|
"logging.log",
|
49
52
|
"roles_active_record.gemspec",
|
50
|
-
"roles_for_ar.gemspec",
|
51
53
|
"sandbox/Rakefile",
|
52
54
|
"sandbox/add_role_to_users_migration.erb",
|
53
55
|
"sandbox/create_roles_migration.erb",
|
@@ -72,7 +74,6 @@ Gem::Specification.new do |s|
|
|
72
74
|
"spec/migrations/role_string/002_add_role_string_to_users.rb",
|
73
75
|
"spec/migrations/roles_mask/005_add_roles_mask_to_users.rb",
|
74
76
|
"spec/migrations/users/001_create_users.rb",
|
75
|
-
"spec/roles_active_record/admin_flag_spec.rb",
|
76
77
|
"spec/roles_active_record/generators/roles_generator_spec.rb",
|
77
78
|
"spec/roles_active_record/generators/roles_migration/admin_flag_spec.rb",
|
78
79
|
"spec/roles_active_record/generators/roles_migration/many_roles_spec.rb",
|
@@ -80,10 +81,14 @@ Gem::Specification.new do |s|
|
|
80
81
|
"spec/roles_active_record/generators/roles_migration/role_string_spec.rb",
|
81
82
|
"spec/roles_active_record/generators/roles_migration/roles_mask_spec.rb",
|
82
83
|
"spec/roles_active_record/generators/setup_generator_spec.rb",
|
83
|
-
"spec/roles_active_record/
|
84
|
-
"spec/roles_active_record/
|
85
|
-
"spec/roles_active_record/
|
86
|
-
"spec/roles_active_record/roles_mask_spec.rb",
|
84
|
+
"spec/roles_active_record/strategy/api.rb",
|
85
|
+
"spec/roles_active_record/strategy/api_examples.rb",
|
86
|
+
"spec/roles_active_record/strategy/multi/many_roles_spec.rb",
|
87
|
+
"spec/roles_active_record/strategy/multi/roles_mask_spec.rb",
|
88
|
+
"spec/roles_active_record/strategy/single/admin_flag_spec.rb",
|
89
|
+
"spec/roles_active_record/strategy/single/one_role_spec.rb",
|
90
|
+
"spec/roles_active_record/strategy/single/role_string_spec.rb",
|
91
|
+
"spec/roles_active_record/strategy/user_setup.rb",
|
87
92
|
"spec/spec_helper.rb",
|
88
93
|
"tmp/rails/app/models/user.rb",
|
89
94
|
"tmp/rails/config/routes.rb",
|
@@ -112,7 +117,6 @@ Gem::Specification.new do |s|
|
|
112
117
|
"spec/migrations/role_string/002_add_role_string_to_users.rb",
|
113
118
|
"spec/migrations/roles_mask/005_add_roles_mask_to_users.rb",
|
114
119
|
"spec/migrations/users/001_create_users.rb",
|
115
|
-
"spec/roles_active_record/admin_flag_spec.rb",
|
116
120
|
"spec/roles_active_record/generators/roles_generator_spec.rb",
|
117
121
|
"spec/roles_active_record/generators/roles_migration/admin_flag_spec.rb",
|
118
122
|
"spec/roles_active_record/generators/roles_migration/many_roles_spec.rb",
|
@@ -120,10 +124,14 @@ Gem::Specification.new do |s|
|
|
120
124
|
"spec/roles_active_record/generators/roles_migration/role_string_spec.rb",
|
121
125
|
"spec/roles_active_record/generators/roles_migration/roles_mask_spec.rb",
|
122
126
|
"spec/roles_active_record/generators/setup_generator_spec.rb",
|
123
|
-
"spec/roles_active_record/
|
124
|
-
"spec/roles_active_record/
|
125
|
-
"spec/roles_active_record/
|
126
|
-
"spec/roles_active_record/roles_mask_spec.rb",
|
127
|
+
"spec/roles_active_record/strategy/api.rb",
|
128
|
+
"spec/roles_active_record/strategy/api_examples.rb",
|
129
|
+
"spec/roles_active_record/strategy/multi/many_roles_spec.rb",
|
130
|
+
"spec/roles_active_record/strategy/multi/roles_mask_spec.rb",
|
131
|
+
"spec/roles_active_record/strategy/single/admin_flag_spec.rb",
|
132
|
+
"spec/roles_active_record/strategy/single/one_role_spec.rb",
|
133
|
+
"spec/roles_active_record/strategy/single/role_string_spec.rb",
|
134
|
+
"spec/roles_active_record/strategy/user_setup.rb",
|
127
135
|
"spec/spec_helper.rb"
|
128
136
|
]
|
129
137
|
|
@@ -132,48 +140,45 @@ Gem::Specification.new do |s|
|
|
132
140
|
s.specification_version = 3
|
133
141
|
|
134
142
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
135
|
-
s.add_development_dependency(%q<rspec>, [">= 2.0
|
136
|
-
s.add_development_dependency(%q<database_cleaner>, ["
|
137
|
-
s.add_development_dependency(%q<generator-spec>, ["
|
138
|
-
s.add_runtime_dependency(%q<activerecord>, ["~> 3.0
|
139
|
-
s.add_runtime_dependency(%q<activesupport>, ["~> 3.0
|
140
|
-
s.add_runtime_dependency(%q<arel>, ["~> 1.0
|
141
|
-
s.add_runtime_dependency(%q<meta_where>, ["
|
142
|
-
s.add_runtime_dependency(%q<sugar-high>, ["~> 0.
|
143
|
+
s.add_development_dependency(%q<rspec>, [">= 2.0"])
|
144
|
+
s.add_development_dependency(%q<database_cleaner>, [">= 0.5"])
|
145
|
+
s.add_development_dependency(%q<generator-spec>, [">= 0.7.0"])
|
146
|
+
s.add_runtime_dependency(%q<activerecord>, ["~> 3.0"])
|
147
|
+
s.add_runtime_dependency(%q<activesupport>, ["~> 3.0"])
|
148
|
+
s.add_runtime_dependency(%q<arel>, ["~> 1.0"])
|
149
|
+
s.add_runtime_dependency(%q<meta_where>, [">= 0.9"])
|
150
|
+
s.add_runtime_dependency(%q<sugar-high>, ["~> 0.3.0"])
|
143
151
|
s.add_runtime_dependency(%q<require_all>, ["~> 1.2.0"])
|
144
|
-
s.add_runtime_dependency(%q<roles_generic>, ["
|
145
|
-
s.add_runtime_dependency(%q<rails3_artifactor>, ["
|
146
|
-
s.add_runtime_dependency(%q<logging_assist>, ["
|
147
|
-
s.add_runtime_dependency(%q<migration_assist>, [">= 0.1.5"])
|
152
|
+
s.add_runtime_dependency(%q<roles_generic>, [">= 0.3.0"])
|
153
|
+
s.add_runtime_dependency(%q<rails3_artifactor>, ["~> 0.3.1"])
|
154
|
+
s.add_runtime_dependency(%q<logging_assist>, ["~> 0.1.6"])
|
148
155
|
else
|
149
|
-
s.add_dependency(%q<rspec>, [">= 2.0
|
150
|
-
s.add_dependency(%q<database_cleaner>, ["
|
151
|
-
s.add_dependency(%q<generator-spec>, ["
|
152
|
-
s.add_dependency(%q<activerecord>, ["~> 3.0
|
153
|
-
s.add_dependency(%q<activesupport>, ["~> 3.0
|
154
|
-
s.add_dependency(%q<arel>, ["~> 1.0
|
155
|
-
s.add_dependency(%q<meta_where>, ["
|
156
|
-
s.add_dependency(%q<sugar-high>, ["~> 0.
|
156
|
+
s.add_dependency(%q<rspec>, [">= 2.0"])
|
157
|
+
s.add_dependency(%q<database_cleaner>, [">= 0.5"])
|
158
|
+
s.add_dependency(%q<generator-spec>, [">= 0.7.0"])
|
159
|
+
s.add_dependency(%q<activerecord>, ["~> 3.0"])
|
160
|
+
s.add_dependency(%q<activesupport>, ["~> 3.0"])
|
161
|
+
s.add_dependency(%q<arel>, ["~> 1.0"])
|
162
|
+
s.add_dependency(%q<meta_where>, [">= 0.9"])
|
163
|
+
s.add_dependency(%q<sugar-high>, ["~> 0.3.0"])
|
157
164
|
s.add_dependency(%q<require_all>, ["~> 1.2.0"])
|
158
|
-
s.add_dependency(%q<roles_generic>, ["
|
159
|
-
s.add_dependency(%q<rails3_artifactor>, ["
|
160
|
-
s.add_dependency(%q<logging_assist>, ["
|
161
|
-
s.add_dependency(%q<migration_assist>, [">= 0.1.5"])
|
165
|
+
s.add_dependency(%q<roles_generic>, [">= 0.3.0"])
|
166
|
+
s.add_dependency(%q<rails3_artifactor>, ["~> 0.3.1"])
|
167
|
+
s.add_dependency(%q<logging_assist>, ["~> 0.1.6"])
|
162
168
|
end
|
163
169
|
else
|
164
|
-
s.add_dependency(%q<rspec>, [">= 2.0
|
165
|
-
s.add_dependency(%q<database_cleaner>, ["
|
166
|
-
s.add_dependency(%q<generator-spec>, ["
|
167
|
-
s.add_dependency(%q<activerecord>, ["~> 3.0
|
168
|
-
s.add_dependency(%q<activesupport>, ["~> 3.0
|
169
|
-
s.add_dependency(%q<arel>, ["~> 1.0
|
170
|
-
s.add_dependency(%q<meta_where>, ["
|
171
|
-
s.add_dependency(%q<sugar-high>, ["~> 0.
|
170
|
+
s.add_dependency(%q<rspec>, [">= 2.0"])
|
171
|
+
s.add_dependency(%q<database_cleaner>, [">= 0.5"])
|
172
|
+
s.add_dependency(%q<generator-spec>, [">= 0.7.0"])
|
173
|
+
s.add_dependency(%q<activerecord>, ["~> 3.0"])
|
174
|
+
s.add_dependency(%q<activesupport>, ["~> 3.0"])
|
175
|
+
s.add_dependency(%q<arel>, ["~> 1.0"])
|
176
|
+
s.add_dependency(%q<meta_where>, [">= 0.9"])
|
177
|
+
s.add_dependency(%q<sugar-high>, ["~> 0.3.0"])
|
172
178
|
s.add_dependency(%q<require_all>, ["~> 1.2.0"])
|
173
|
-
s.add_dependency(%q<roles_generic>, ["
|
174
|
-
s.add_dependency(%q<rails3_artifactor>, ["
|
175
|
-
s.add_dependency(%q<logging_assist>, ["
|
176
|
-
s.add_dependency(%q<migration_assist>, [">= 0.1.5"])
|
179
|
+
s.add_dependency(%q<roles_generic>, [">= 0.3.0"])
|
180
|
+
s.add_dependency(%q<rails3_artifactor>, ["~> 0.3.1"])
|
181
|
+
s.add_dependency(%q<logging_assist>, ["~> 0.1.6"])
|
177
182
|
end
|
178
183
|
end
|
179
184
|
|
@@ -0,0 +1,214 @@
|
|
1
|
+
class Role
|
2
|
+
end
|
3
|
+
|
4
|
+
describe 'Roles Generic API' do
|
5
|
+
before :each do
|
6
|
+
default_user_setup
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#in_role' do
|
10
|
+
it "should return first user matching role" do
|
11
|
+
if User.respond_to? :in_role
|
12
|
+
User.in_role(:guest).first.name.should == 'Guest user'
|
13
|
+
User.in_role(:admin).first.name.should == 'Admin user'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#in_roles' do
|
19
|
+
it "should return first user matching role" do
|
20
|
+
if User.respond_to? :in_roles
|
21
|
+
User.in_roles(:guest, :user).first.name.should == 'Guest user'
|
22
|
+
User.in_roles(:admin, :guest).should be_empty
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
# it "should be true that a User that includes Roles::Generic has a complete Roles::Generic interface" do
|
29
|
+
# # mutation API
|
30
|
+
# [:roles=, :role=, :add_roles, :add_role, :remove_role, :remove_roles, :exchange_roles, :exchange_role].each do |api_method|
|
31
|
+
# @admin_user.respond_to?(api_method).should be_true
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# # inspection API
|
35
|
+
# [:valid_role?, :valid_roles?, :has_roles?, :has_role?, :has?, :is?, :roles, :roles_list, :admin?].each do |api_method|
|
36
|
+
# @admin_user.respond_to?(api_method).should be_true
|
37
|
+
# end
|
38
|
+
#
|
39
|
+
# # class method API
|
40
|
+
# [:valid_role?, :valid_roles?, :valid_roles].each do |class_api_method|
|
41
|
+
# @admin_user.class.respond_to?(class_api_method).should be_true
|
42
|
+
# end
|
43
|
+
# end
|
44
|
+
#
|
45
|
+
# describe '#valid_role?' do
|
46
|
+
# it "should be true that the admin user has a valid role of :guest" do
|
47
|
+
# # @admin_user.valid_role?(:guest).should be_true
|
48
|
+
# end
|
49
|
+
#
|
50
|
+
# it "should be true that the User class has a valid role of :guest" do
|
51
|
+
# # User.valid_role?(:guest).should be_true
|
52
|
+
# end
|
53
|
+
# end
|
54
|
+
|
55
|
+
# describe '#valid_roles' do
|
56
|
+
# it "should be true that the admin user has a valid role of :guest" do
|
57
|
+
# # @admin_user.valid_roles.should include(:guest, :admin)
|
58
|
+
# end
|
59
|
+
#
|
60
|
+
# it "should be true that the User class has a valid role of :guest" do
|
61
|
+
# User.valid_roles.should include(:guest, :admin)
|
62
|
+
# end
|
63
|
+
# end
|
64
|
+
#
|
65
|
+
# describe '#valid_roles?' do
|
66
|
+
# it "should be true that the admin user has a valid role of :guest" do
|
67
|
+
# @admin_user.valid_roles?(:guest, :admin).should be_true
|
68
|
+
# end
|
69
|
+
#
|
70
|
+
# it "should be true that the User class has a valid role of :guest" do
|
71
|
+
# User.valid_roles?(:guest, :admin).should be_true
|
72
|
+
# end
|
73
|
+
# end
|
74
|
+
#
|
75
|
+
# describe '#has_role?' do
|
76
|
+
# it "should have admin user role to :admin and not to :user" do
|
77
|
+
# @admin_user.has_role?(:user).should be_false
|
78
|
+
# @admin_user.has_role?(:admin).should be_true
|
79
|
+
# end
|
80
|
+
#
|
81
|
+
# it "should be true that guest user has role :user and not :admin" do
|
82
|
+
# @guest_user.has_role?(:guest).should be_true
|
83
|
+
# @guest_user.has_role?(:admin).should be_false
|
84
|
+
# end
|
85
|
+
# end
|
86
|
+
#
|
87
|
+
# describe '#has?' do
|
88
|
+
# it "should be true that the admin_user has the :admin role" do
|
89
|
+
# @admin_user.has?(:admin).should be_true
|
90
|
+
# end
|
91
|
+
#
|
92
|
+
# it "should NOT be true that the admin_user has the :admin role" do
|
93
|
+
# @guest_user.has?(:admin).should be_false
|
94
|
+
# end
|
95
|
+
# end
|
96
|
+
#
|
97
|
+
# describe '#has_roles?' do
|
98
|
+
# it "should be true that the admin_user has the roles :admin" do
|
99
|
+
# @admin_user.has_roles?(:admin).should be_true
|
100
|
+
# end
|
101
|
+
#
|
102
|
+
# it "should NOT be true that the user has the roles :admin" do
|
103
|
+
# @guest_user.has_roles?(:admin).should be_false
|
104
|
+
# end
|
105
|
+
# end
|
106
|
+
#
|
107
|
+
# describe '#roles_list' do
|
108
|
+
# it "should be true that the first role of admin_user is the :admin role" do
|
109
|
+
# @admin_user.roles_list.should include(:admin)
|
110
|
+
# end
|
111
|
+
#
|
112
|
+
# it "should be true that the first role of admin_user is the :user role" do
|
113
|
+
# case @normal_user.class.role_strategy.multiplicity
|
114
|
+
# when :single
|
115
|
+
# if @normal_user.class.role_strategy.name == :admin_flag
|
116
|
+
# @normal_user.roles_list.should include(:guest)
|
117
|
+
# else
|
118
|
+
# @normal_user.roles_list.should include(:user)
|
119
|
+
# end
|
120
|
+
# when :multi
|
121
|
+
# @normal_user.roles_list.should include(:user, :guest)
|
122
|
+
# end
|
123
|
+
# end
|
124
|
+
# end
|
125
|
+
#
|
126
|
+
# describe '#roles' do
|
127
|
+
# it "should be true that the roles of admin_user is an array with the role :admin" do
|
128
|
+
# roles = @admin_user.roles
|
129
|
+
# if roles.kind_of? Role
|
130
|
+
# roles.name.to_sym.should == :admin
|
131
|
+
# elsif roles.kind_of? Array
|
132
|
+
# if @normal_user.class.role_strategy.type == :complex
|
133
|
+
# roles.first.name.to_sym.should == :admin
|
134
|
+
# else
|
135
|
+
# roles.first.to_sym.should == :admin
|
136
|
+
# end
|
137
|
+
# else
|
138
|
+
# roles.to_sym.should == :admin
|
139
|
+
# end
|
140
|
+
# end
|
141
|
+
# end
|
142
|
+
#
|
143
|
+
# describe '#admin?' do
|
144
|
+
# it "should be true that admin_user is in the :admin role" do
|
145
|
+
# @admin_user.admin?.should be_true
|
146
|
+
# end
|
147
|
+
#
|
148
|
+
# it "should NOT be true that the user is in the :admin role" do
|
149
|
+
# @guest_user.admin?.should be_false
|
150
|
+
# end
|
151
|
+
# end
|
152
|
+
#
|
153
|
+
# describe '#is?' do
|
154
|
+
# it "should be true that admin_user is in the :admin role" do
|
155
|
+
# @admin_user.is?(:admin).should be_true
|
156
|
+
# end
|
157
|
+
#
|
158
|
+
# it "should NOT be true that the user is in the :admin role" do
|
159
|
+
# @guest_user.is?(:admin).should be_false
|
160
|
+
# end
|
161
|
+
# end
|
162
|
+
#
|
163
|
+
# describe '#roles=' do
|
164
|
+
# it "should set user role to :admin" do
|
165
|
+
# @guest_user.roles = :admin
|
166
|
+
# @guest_user.has_role?(:admin).should be_true
|
167
|
+
# @guest_user.roles = :guest
|
168
|
+
# end
|
169
|
+
# end
|
170
|
+
#
|
171
|
+
# describe '#exchange_roles' do
|
172
|
+
# it "should exchange user role :user with role :admin" do
|
173
|
+
# @guest_user.exchange_role :guest, :with => :admin
|
174
|
+
# @guest_user.has?(:guest).should be_false
|
175
|
+
# @guest_user.has?(:admin).should be_true
|
176
|
+
# end
|
177
|
+
#
|
178
|
+
# it "should exchange user role :admin with roles :user and :guest" do
|
179
|
+
# @admin_user.exchange_role :admin, :with => [:user, :guest]
|
180
|
+
# puts "Role: #{@admin_user.role}"
|
181
|
+
# @admin_user.has?(:admin).should be_false
|
182
|
+
#
|
183
|
+
# case @admin_user.class.role_strategy.multiplicity
|
184
|
+
# when :single
|
185
|
+
# if @normal_user.class.role_strategy.name == :admin_flag
|
186
|
+
# @admin_user.has?(:admin).should be_false
|
187
|
+
# @admin_user.has?(:guest).should be_true
|
188
|
+
# else
|
189
|
+
# @admin_user.has?(:user).should be_true
|
190
|
+
# @admin_user.has?(:guest).should be_false
|
191
|
+
# @admin_user.has?(:admin).should be_false
|
192
|
+
# end
|
193
|
+
# when :multi
|
194
|
+
# @admin_user.has_role?(:user).should be_true
|
195
|
+
# @admin_user.has_role?(:guest).should be_true
|
196
|
+
# @admin_user.has?(:admin).should be_false
|
197
|
+
# end
|
198
|
+
# end
|
199
|
+
# end
|
200
|
+
#
|
201
|
+
# describe '#remove_roles' do
|
202
|
+
# it "should remove user role :admin using #remove_roles" do
|
203
|
+
# @admin_user.remove_roles :admin
|
204
|
+
# @admin_user.has_role?(:admin).should_not be_true
|
205
|
+
# end
|
206
|
+
#
|
207
|
+
# it "should remove user role :admin using #remove_role" do
|
208
|
+
# @guest_user.add_role :admin
|
209
|
+
# @guest_user.has_role?(:admin).should be_true
|
210
|
+
# @guest_user.remove_role :admin
|
211
|
+
# @guest_user.has_role?(:admin).should_not be_true
|
212
|
+
# end
|
213
|
+
# end
|
214
|
+
end
|
@@ -0,0 +1,213 @@
|
|
1
|
+
describe "Roles for Active Record: #{api_name}" do
|
2
|
+
before do
|
3
|
+
api_migrate
|
4
|
+
end
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
api_fixture
|
8
|
+
end
|
9
|
+
|
10
|
+
require "roles_active_record/strategy/user_setup.rb"
|
11
|
+
|
12
|
+
before do
|
13
|
+
default_user_setup
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#in_role' do
|
17
|
+
it "should return first user matching role" do
|
18
|
+
if User.respond_to? :in_role
|
19
|
+
User.in_role(:guest).first.name.should == 'Guest user'
|
20
|
+
User.in_role(:admin).first.name.should == 'Admin user'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#in_any_role' do
|
26
|
+
it "should return first user matching role" do
|
27
|
+
if User.respond_to? :in_roles
|
28
|
+
User.in_any_role(:guest, :user).first.name.should == 'Guest user'
|
29
|
+
User.in_any_role(:admin, :guest).should be_empty
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should be true that a User that includes Roles::Generic has a complete Roles::Generic interface" do
|
35
|
+
# mutation API
|
36
|
+
[:roles=, :role=, :add_roles, :add_role, :remove_role, :remove_roles, :exchange_roles, :exchange_role].each do |api_method|
|
37
|
+
@admin_user.respond_to?(api_method).should be_true
|
38
|
+
end
|
39
|
+
|
40
|
+
# inspection API
|
41
|
+
[:valid_role?, :valid_roles?, :has_roles?, :has_role?, :has?, :is?, :roles, :roles_list, :admin?].each do |api_method|
|
42
|
+
@admin_user.respond_to?(api_method).should be_true
|
43
|
+
end
|
44
|
+
|
45
|
+
# class method API
|
46
|
+
[:valid_role?, :valid_roles?, :valid_roles].each do |class_api_method|
|
47
|
+
@admin_user.class.respond_to?(class_api_method).should be_true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#valid_role?' do
|
52
|
+
it "should be true that the admin user has a valid role of :guest" do
|
53
|
+
# @admin_user.valid_role?(:guest).should be_true
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should be true that the User class has a valid role of :guest" do
|
57
|
+
# User.valid_role?(:guest).should be_true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#valid_roles' do
|
62
|
+
it "should be true that the admin user has a valid role of :guest" do
|
63
|
+
# @admin_user.valid_roles.should include(:guest, :admin)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should be true that the User class has a valid role of :guest" do
|
67
|
+
User.valid_roles.should include(:guest, :admin)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '#valid_roles?' do
|
72
|
+
it "should be true that the admin user has a valid role of :guest" do
|
73
|
+
@admin_user.valid_roles?(:guest, :admin).should be_true
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should be true that the User class has a valid role of :guest" do
|
77
|
+
User.valid_roles?(:guest, :admin).should be_true
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe '#has_role?' do
|
82
|
+
it "should have admin user role to :admin and not to :user" do
|
83
|
+
@admin_user.has_role?(:user).should be_false
|
84
|
+
@admin_user.has_role?(:admin).should be_true
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should be true that guest user has role :guest and not :admin" do
|
88
|
+
puts "Guest user: #{@guest_user.roles_list}"
|
89
|
+
@guest_user.has_role?(:guest).should be_true
|
90
|
+
@guest_user.has_role?(:admin).should be_false
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe '#has?' do
|
95
|
+
it "should be true that the admin_user has the :admin role" do
|
96
|
+
@admin_user.has?(:admin).should be_true
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should NOT be true that the admin_user has the :admin role" do
|
100
|
+
@guest_user.has?(:admin).should be_false
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe '#has_roles?' do
|
105
|
+
it "should be true that the admin_user has the roles :admin" do
|
106
|
+
# @admin_user.has_roles?(:admin).should be_true
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should NOT be true that the user has the roles :admin" do
|
110
|
+
@guest_user.has_roles?(:admin).should be_false
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe '#roles_list' do
|
115
|
+
it "should be true that the first role of admin_user is the :admin role" do
|
116
|
+
@admin_user.roles_list.should include(:admin)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should be true that the first role of admin_user is the :user role" do
|
120
|
+
case @normal_user.class.role_strategy.multiplicity
|
121
|
+
when :single
|
122
|
+
#if @normal_user.class.role_strategy.name == :admin_flag
|
123
|
+
@normal_user.roles_list.should include(:guest)
|
124
|
+
# else
|
125
|
+
# @normal_user.roles_list.should include(:user)
|
126
|
+
#end
|
127
|
+
when :multi
|
128
|
+
puts "Norm: #{@normal_user.roles}"
|
129
|
+
@normal_user.roles_list.should include(:user, :guest)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe '#roles' do
|
135
|
+
it "should be true that the roles of admin_user is an array with the role :admin" do
|
136
|
+
roles = @admin_user.roles
|
137
|
+
if defined?(Role) && roles.kind_of?(Role)
|
138
|
+
roles.name.to_sym.should == :admin
|
139
|
+
elsif roles.kind_of? Array
|
140
|
+
if @normal_user.class.role_strategy.type == :complex
|
141
|
+
roles.first.name.to_sym.should == :admin
|
142
|
+
end
|
143
|
+
if @normal_user.class.role_strategy.name == :admin_flag
|
144
|
+
roles.first.should == true
|
145
|
+
end
|
146
|
+
else
|
147
|
+
roles.to_sym.should == :admin
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
describe '#admin?' do
|
153
|
+
it "should be true that admin_user is in the :admin role" do
|
154
|
+
@admin_user.admin?.should be_true
|
155
|
+
end
|
156
|
+
|
157
|
+
it "should NOT be true that the user is in the :admin role" do
|
158
|
+
@guest_user.admin?.should be_false
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe '#is?' do
|
163
|
+
it "should be true that admin_user is in the :admin role" do
|
164
|
+
@admin_user.is?(:admin).should be_true
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should NOT be true that the user is in the :admin role" do
|
168
|
+
@guest_user.is?(:admin).should be_false
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
describe '#roles=' do
|
173
|
+
it "should set user role to :admin" do
|
174
|
+
@guest_user.roles = :admin
|
175
|
+
@guest_user.has_role?(:admin).should be_true
|
176
|
+
@guest_user.roles = :guest
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
describe '#exchange_roles' do
|
181
|
+
it "should exchange user role :user with role :admin" do
|
182
|
+
@guest_user.exchange_role :guest, :with => :admin
|
183
|
+
@guest_user.has?(:guest).should be_false
|
184
|
+
@guest_user.has?(:admin).should be_true
|
185
|
+
end
|
186
|
+
|
187
|
+
it "should exchange user role :admin with roles :user and :guest" do
|
188
|
+
case @admin_user.class.role_strategy.multiplicity
|
189
|
+
when :single
|
190
|
+
lambda { @admin_user.exchange_role :admin, :with => [:user, :guest] }.should raise_error(ArgumentError)
|
191
|
+
when :multi
|
192
|
+
@admin_user.exchange_role :admin, :with => [:user, :guest]
|
193
|
+
@admin_user.has_role?(:user).should be_true
|
194
|
+
@admin_user.has_role?(:guest).should be_true
|
195
|
+
@admin_user.has?(:admin).should be_false
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
describe '#remove_roles' do
|
201
|
+
it "should remove user role :admin using #remove_roles" do
|
202
|
+
@admin_user.remove_roles :admin
|
203
|
+
@admin_user.has_role?(:admin).should_not be_true
|
204
|
+
end
|
205
|
+
|
206
|
+
it "should remove user role :admin using #remove_role" do
|
207
|
+
@guest_user.add_role :admin
|
208
|
+
@guest_user.has_role?(:admin).should be_true
|
209
|
+
@guest_user.remove_role :admin
|
210
|
+
@guest_user.has_role?(:admin).should_not be_true
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
use_roles_strategy :many_roles
|
3
|
+
|
4
|
+
class User < ActiveRecord::Base
|
5
|
+
include Roles::ActiveRecord
|
6
|
+
|
7
|
+
strategy :many_roles, :default
|
8
|
+
valid_roles_are :admin, :guest, :user
|
9
|
+
end
|
10
|
+
|
11
|
+
def api_migrate
|
12
|
+
migrate('many_roles')
|
13
|
+
end
|
14
|
+
|
15
|
+
def api_fixture
|
16
|
+
load 'fixtures/many_roles_setup.rb'
|
17
|
+
end
|
18
|
+
|
19
|
+
def api_name
|
20
|
+
:many_roles
|
21
|
+
end
|
22
|
+
|
23
|
+
load 'roles_active_record/strategy/api_examples.rb'
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
use_roles_strategy :roles_mask
|
3
|
+
|
4
|
+
class User < ActiveRecord::Base
|
5
|
+
include Roles::ActiveRecord
|
6
|
+
|
7
|
+
strategy :roles_mask, :default
|
8
|
+
valid_roles_are :admin, :guest, :user
|
9
|
+
end
|
10
|
+
|
11
|
+
def api_migrate
|
12
|
+
migrate('roles_mask')
|
13
|
+
end
|
14
|
+
|
15
|
+
def api_name
|
16
|
+
:roles_mask
|
17
|
+
end
|
18
|
+
|
19
|
+
load 'roles_active_record/strategy/api_examples.rb'
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
|