ae_declarative_authorization 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +21 -21
  3. data/CHANGELOG +189 -189
  4. data/Gemfile +7 -7
  5. data/Gemfile.lock +45 -45
  6. data/LICENSE.txt +20 -20
  7. data/README.md +620 -620
  8. data/README.rdoc +597 -597
  9. data/Rakefile +33 -33
  10. data/authorization_rules.dist.rb +20 -20
  11. data/declarative_authorization.gemspec +24 -24
  12. data/gemfiles/rails4252.gemfile +10 -10
  13. data/gemfiles/rails4271.gemfile +10 -10
  14. data/gemfiles/rails507.gemfile +11 -11
  15. data/init.rb +5 -5
  16. data/lib/declarative_authorization.rb +18 -18
  17. data/lib/declarative_authorization/authorization.rb +821 -821
  18. data/lib/declarative_authorization/helper.rb +78 -78
  19. data/lib/declarative_authorization/in_controller.rb +713 -713
  20. data/lib/declarative_authorization/in_model.rb +156 -156
  21. data/lib/declarative_authorization/maintenance.rb +215 -215
  22. data/lib/declarative_authorization/obligation_scope.rb +345 -345
  23. data/lib/declarative_authorization/railsengine.rb +5 -5
  24. data/lib/declarative_authorization/reader.rb +549 -549
  25. data/lib/declarative_authorization/test/helpers.rb +261 -261
  26. data/lib/declarative_authorization/version.rb +3 -3
  27. data/lib/generators/authorization/install/install_generator.rb +77 -77
  28. data/lib/generators/authorization/rules/rules_generator.rb +13 -13
  29. data/lib/generators/authorization/rules/templates/authorization_rules.rb +27 -27
  30. data/lib/tasks/authorization_tasks.rake +89 -89
  31. data/test/authorization_test.rb +1121 -1121
  32. data/test/controller_filter_resource_access_test.rb +573 -573
  33. data/test/controller_test.rb +478 -478
  34. data/test/database.yml +3 -3
  35. data/test/dsl_reader_test.rb +178 -178
  36. data/test/functional/filter_access_to_with_id_in_scope_test.rb +88 -88
  37. data/test/functional/no_filter_access_to_test.rb +79 -79
  38. data/test/functional/params_block_arity_test.rb +39 -39
  39. data/test/helper_test.rb +248 -248
  40. data/test/maintenance_test.rb +46 -46
  41. data/test/model_test.rb +1840 -1840
  42. data/test/schema.sql +60 -60
  43. data/test/test_helper.rb +174 -174
  44. data/test/test_support/minitest_compatibility.rb +26 -26
  45. metadata +3 -9
  46. data/gemfiles/rails4252.gemfile.lock +0 -126
  47. data/gemfiles/rails4271.gemfile.lock +0 -126
  48. data/gemfiles/rails507.gemfile.lock +0 -136
  49. data/log/test.log +0 -34715
  50. data/test/profiles/access_checking +0 -46
@@ -1,79 +1,79 @@
1
- require 'test_helper'
2
-
3
- class NoFilterAccessObject < MockDataObject
4
- def self.name
5
- "NoFilterAccessObject"
6
- end
7
- end
8
-
9
- class NoFilterAccessObjectsController < MocksController
10
- filter_access_to :all, attribute_check: true, load_method: :find_no_filter_access_object
11
- no_filter_access_to :index
12
-
13
- define_action_methods :index, :show
14
-
15
- private
16
-
17
- def find_no_filter_access_object
18
- NoFilterAccessObject.find_or_initialize_by(params.permit(:id, :special_attribute).to_hash)
19
- end
20
- end
21
-
22
- class NoFilterAccessToTest < ActionController::TestCase
23
- include DeclarativeAuthorization::Test::Helpers
24
- tests NoFilterAccessObjectsController
25
-
26
- access_tests_not_required
27
-
28
- AUTHORIZATION_RULES = <<-RULES.freeze
29
- authorization do
30
- role :allowed_role do
31
- has_permission_on :no_filter_access_objects, to: :index do
32
- if_attribute special_attribute: is { 'secret' }
33
- end
34
- has_permission_on :no_filter_access_objects, to: :show do
35
- if_attribute id: is { '1' }
36
- end
37
- end
38
- end
39
- RULES
40
-
41
- setup do
42
- @reader = Authorization::Reader::DSLReader.new
43
- @reader.parse(AUTHORIZATION_RULES)
44
- Authorization::Engine.instance(@reader)
45
- end
46
-
47
- def test_filter_access_to
48
- with_routing do |map|
49
- map.draw do
50
- resources :no_filter_access_objects, only: [:index, :show]
51
- end
52
-
53
- disallowed_user = MockUser.new
54
- allowed_user = MockUser.new(:allowed_role)
55
-
56
- request!(disallowed_user, :show, @reader, id: '1')
57
- assert !@controller.authorized?
58
-
59
- request!(allowed_user, :show, @reader, id: '100', clear: [:@no_filter_access_object])
60
- assert !@controller.authorized?
61
-
62
- request!(allowed_user, :show, @reader, id: '1', clear: [:@no_filter_access_object])
63
- assert @controller.authorized?
64
- end
65
- end
66
-
67
- def test_no_filter_access_to
68
- with_routing do |map|
69
- map.draw do
70
- resources :no_filter_access_objects, only: [:index, :show]
71
- end
72
-
73
- non_special_user = MockUser.new
74
-
75
- request!(non_special_user, :index, @reader, id: '1', special_attribute: 'wrong')
76
- assert @controller.authorized?
77
- end
78
- end
79
- end
1
+ require 'test_helper'
2
+
3
+ class NoFilterAccessObject < MockDataObject
4
+ def self.name
5
+ "NoFilterAccessObject"
6
+ end
7
+ end
8
+
9
+ class NoFilterAccessObjectsController < MocksController
10
+ filter_access_to :all, attribute_check: true, load_method: :find_no_filter_access_object
11
+ no_filter_access_to :index
12
+
13
+ define_action_methods :index, :show
14
+
15
+ private
16
+
17
+ def find_no_filter_access_object
18
+ NoFilterAccessObject.find_or_initialize_by(params.permit(:id, :special_attribute).to_hash)
19
+ end
20
+ end
21
+
22
+ class NoFilterAccessToTest < ActionController::TestCase
23
+ include DeclarativeAuthorization::Test::Helpers
24
+ tests NoFilterAccessObjectsController
25
+
26
+ access_tests_not_required
27
+
28
+ AUTHORIZATION_RULES = <<-RULES.freeze
29
+ authorization do
30
+ role :allowed_role do
31
+ has_permission_on :no_filter_access_objects, to: :index do
32
+ if_attribute special_attribute: is { 'secret' }
33
+ end
34
+ has_permission_on :no_filter_access_objects, to: :show do
35
+ if_attribute id: is { '1' }
36
+ end
37
+ end
38
+ end
39
+ RULES
40
+
41
+ setup do
42
+ @reader = Authorization::Reader::DSLReader.new
43
+ @reader.parse(AUTHORIZATION_RULES)
44
+ Authorization::Engine.instance(@reader)
45
+ end
46
+
47
+ def test_filter_access_to
48
+ with_routing do |map|
49
+ map.draw do
50
+ resources :no_filter_access_objects, only: [:index, :show]
51
+ end
52
+
53
+ disallowed_user = MockUser.new
54
+ allowed_user = MockUser.new(:allowed_role)
55
+
56
+ request!(disallowed_user, :show, @reader, id: '1')
57
+ assert !@controller.authorized?
58
+
59
+ request!(allowed_user, :show, @reader, id: '100', clear: [:@no_filter_access_object])
60
+ assert !@controller.authorized?
61
+
62
+ request!(allowed_user, :show, @reader, id: '1', clear: [:@no_filter_access_object])
63
+ assert @controller.authorized?
64
+ end
65
+ end
66
+
67
+ def test_no_filter_access_to
68
+ with_routing do |map|
69
+ map.draw do
70
+ resources :no_filter_access_objects, only: [:index, :show]
71
+ end
72
+
73
+ non_special_user = MockUser.new
74
+
75
+ request!(non_special_user, :index, @reader, id: '1', special_attribute: 'wrong')
76
+ assert @controller.authorized?
77
+ end
78
+ end
79
+ end
@@ -1,39 +1,39 @@
1
- require 'test_helper'
2
-
3
- class ParamsBlockArityTest < ActionController::TestCase
4
- include DeclarativeAuthorization::Test::Helpers
5
-
6
- class ParamsBlockArityTestController < ApplicationController
7
-
8
- end
9
-
10
- tests ParamsBlockArityTestController
11
-
12
- access_tests do
13
-
14
- params :less_than_max_arguments do | one |
15
- { this: :works }
16
- end
17
-
18
- params :too_many_arguments do | one, two, three |
19
- { what: :ever }
20
- end
21
-
22
- end
23
-
24
- def test_params_arity
25
- assert_raises(InvalidParamsBlockArity) do
26
- access_test_params(:too_many_arguments)
27
- end
28
-
29
- assert_equal({ this: :works }, access_test_params(:less_than_max_arguments))
30
- end
31
-
32
- private
33
-
34
- def access_test_params_for_param_methods
35
- [:old_user, :new_user]
36
- end
37
-
38
- end
39
-
1
+ require 'test_helper'
2
+
3
+ class ParamsBlockArityTest < ActionController::TestCase
4
+ include DeclarativeAuthorization::Test::Helpers
5
+
6
+ class ParamsBlockArityTestController < ApplicationController
7
+
8
+ end
9
+
10
+ tests ParamsBlockArityTestController
11
+
12
+ access_tests do
13
+
14
+ params :less_than_max_arguments do | one |
15
+ { this: :works }
16
+ end
17
+
18
+ params :too_many_arguments do | one, two, three |
19
+ { what: :ever }
20
+ end
21
+
22
+ end
23
+
24
+ def test_params_arity
25
+ assert_raises(InvalidParamsBlockArity) do
26
+ access_test_params(:too_many_arguments)
27
+ end
28
+
29
+ assert_equal({ this: :works }, access_test_params(:less_than_max_arguments))
30
+ end
31
+
32
+ private
33
+
34
+ def access_test_params_for_param_methods
35
+ [:old_user, :new_user]
36
+ end
37
+
38
+ end
39
+
data/test/helper_test.rb CHANGED
@@ -1,248 +1,248 @@
1
- require 'test_helper'
2
- require File.join(File.dirname(__FILE__), %w{.. lib declarative_authorization helper})
3
-
4
-
5
- class HelperMocksController < MocksController
6
- filter_access_to :action, :require => :show, :context => :mocks
7
- define_action_methods :action
8
- end
9
- class HelperTest < ActionController::TestCase
10
- tests HelperMocksController
11
- include Authorization::AuthorizationHelper
12
- attr_reader :controller
13
- def test_permit
14
- reader = Authorization::Reader::DSLReader.new
15
- reader.parse %{
16
- authorization do
17
- role :test_role do
18
- has_permission_on :mocks, :to => :show
19
- end
20
- role :test_role_2 do
21
- has_permission_on :mocks, :to => :update
22
- end
23
- end
24
- }
25
- user = MockUser.new(:test_role)
26
- request!(user, :action, reader)
27
-
28
- assert permitted_to?(:show, :mocks)
29
- assert !permitted_to?(:update, :mocks)
30
-
31
- block_evaled = false
32
- permitted_to?(:show, :mocks) do
33
- block_evaled = true
34
- end
35
- assert block_evaled
36
-
37
- block_evaled = false
38
- permitted_to?(:update, :mocks) do
39
- block_evaled = true
40
- end
41
- assert !block_evaled
42
- end
43
-
44
- def test_permit_with_object
45
- reader = Authorization::Reader::DSLReader.new
46
- reader.parse %{
47
- authorization do
48
- role :test_role do
49
- has_permission_on :mocks do
50
- to :show
51
- if_attribute :test_attr => is {user.test_attr}
52
- end
53
- end
54
- end
55
- }
56
- user = MockUser.new(:test_role, :test_attr => 1)
57
- mock = MockDataObject.new(:test_attr => 1)
58
- mock_2 = MockDataObject.new(:test_attr => 2)
59
- request!(user, :action, reader)
60
-
61
- assert permitted_to?(:show, mock)
62
- assert permitted_to?(:show, :mocks)
63
- assert !permitted_to?(:show, mock_2)
64
- end
65
-
66
- def test_permit_with_object_and_context
67
- reader = Authorization::Reader::DSLReader.new
68
- reader.parse %{
69
- authorization do
70
- role :test_role do
71
- has_permission_on :other_mocks do
72
- to :show
73
- if_attribute :test_attr => is {user.test_attr}
74
- end
75
- end
76
- end
77
- }
78
- user = MockUser.new(:test_role, :test_attr => 1)
79
- mock = MockDataObject.new(:test_attr => 1)
80
- mock_2 = MockDataObject.new(:test_attr => 2)
81
- request!(user, :action, reader)
82
-
83
- assert permitted_to?(:show, mock, :context => :other_mocks)
84
- assert !permitted_to?(:show, mock_2, :context => :other_mocks)
85
- end
86
-
87
- def test_has_role
88
- reader = Authorization::Reader::DSLReader.new
89
- reader.parse %{
90
- authorization do
91
- role :test_role do
92
- has_permission_on :mocks, :to => :show
93
- end
94
- end
95
- }
96
- user = MockUser.new(:test_role)
97
- request!(user, :action, reader)
98
-
99
- assert has_role?(:test_role)
100
- assert !has_role?(:test_role2)
101
- assert !has_role?(:test_role, :test_role2)
102
-
103
- block_evaled = false
104
- has_role?(:test_role) do
105
- block_evaled = true
106
- end
107
- assert block_evaled
108
-
109
- block_evaled = false
110
- has_role?(:test_role2) do
111
- block_evaled = true
112
- end
113
- assert !block_evaled
114
- end
115
-
116
- def test_has_any_role
117
- reader = Authorization::Reader::DSLReader.new
118
- reader.parse %{
119
- authorization do
120
- role :test_role do
121
- has_permission_on :mocks, :to => :show
122
- end
123
- end
124
- }
125
- user = MockUser.new(:test_role)
126
- request!(user, :action, reader)
127
-
128
- assert has_any_role?(:test_role)
129
- assert !has_any_role?(:test_role2)
130
- assert has_any_role?(:test_role, :test_role2)
131
-
132
- block_evaled = false
133
- has_any_role?(:test_role) do
134
- block_evaled = true
135
- end
136
- assert block_evaled
137
-
138
- block_evaled = false
139
- has_any_role?(:test_role2) do
140
- block_evaled = true
141
- end
142
- assert !block_evaled
143
-
144
- block_evaled = false
145
- has_any_role?(:test_role,:test_role2) do
146
- block_evaled = true
147
- end
148
- assert block_evaled
149
- end
150
-
151
- def test_has_role_with_guest_user
152
- reader = Authorization::Reader::DSLReader.new
153
- reader.parse %{
154
- authorization do
155
- end
156
- }
157
- request!(nil, :action, reader)
158
-
159
- Authorization.stub :current_user, MockUser.new do
160
- assert !has_role?(:test_role)
161
-
162
- block_evaled = false
163
- has_role?(:test_role) do
164
- block_evaled = true
165
- end
166
- assert !block_evaled
167
- end
168
- end
169
-
170
- def test_has_role_with_hierarchy
171
- reader = Authorization::Reader::DSLReader.new
172
- reader.parse %{
173
- authorization do
174
- role :test_role do
175
- has_permission_on :mocks, :to => :show
176
- end
177
- role :other_role do
178
- has_permission_on :another_mocks, :to => :show
179
- end
180
-
181
- role :root do
182
- includes :test_role
183
- end
184
- end
185
- }
186
-
187
- user = MockUser.new(:root)
188
- request!(user, :action, reader)
189
-
190
- assert has_role_with_hierarchy?(:test_role)
191
- assert !has_role_with_hierarchy?(:other_role)
192
-
193
- block_evaled = false
194
- has_role_with_hierarchy?(:test_role) do
195
- block_evaled = true
196
- end
197
- assert block_evaled
198
-
199
- block_evaled = false
200
- has_role_with_hierarchy?(:test_role2) do
201
- block_evaled = true
202
- end
203
- assert !block_evaled
204
- end
205
-
206
- def test_has_any_role_with_hierarchy
207
- reader = Authorization::Reader::DSLReader.new
208
- reader.parse %{
209
- authorization do
210
- role :test_role do
211
- has_permission_on :mocks, :to => :show
212
- end
213
- role :other_role do
214
- has_permission_on :another_mocks, :to => :show
215
- end
216
-
217
- role :root do
218
- includes :test_role
219
- end
220
- end
221
- }
222
-
223
- user = MockUser.new(:root)
224
- request!(user, :action, reader)
225
-
226
- assert has_any_role_with_hierarchy?(:test_role)
227
- assert !has_any_role_with_hierarchy?(:other_role)
228
- assert has_any_role_with_hierarchy?(:test_role,:other_role)
229
-
230
- block_evaled = false
231
- has_any_role_with_hierarchy?(:test_role) do
232
- block_evaled = true
233
- end
234
- assert block_evaled
235
-
236
- block_evaled = false
237
- has_any_role_with_hierarchy?(:test_role2) do
238
- block_evaled = true
239
- end
240
- assert !block_evaled
241
-
242
- block_evaled = false
243
- has_any_role_with_hierarchy?(:test_role,:test_role2) do
244
- block_evaled = true
245
- end
246
- assert block_evaled
247
- end
248
- end
1
+ require 'test_helper'
2
+ require File.join(File.dirname(__FILE__), %w{.. lib declarative_authorization helper})
3
+
4
+
5
+ class HelperMocksController < MocksController
6
+ filter_access_to :action, :require => :show, :context => :mocks
7
+ define_action_methods :action
8
+ end
9
+ class HelperTest < ActionController::TestCase
10
+ tests HelperMocksController
11
+ include Authorization::AuthorizationHelper
12
+ attr_reader :controller
13
+ def test_permit
14
+ reader = Authorization::Reader::DSLReader.new
15
+ reader.parse %{
16
+ authorization do
17
+ role :test_role do
18
+ has_permission_on :mocks, :to => :show
19
+ end
20
+ role :test_role_2 do
21
+ has_permission_on :mocks, :to => :update
22
+ end
23
+ end
24
+ }
25
+ user = MockUser.new(:test_role)
26
+ request!(user, :action, reader)
27
+
28
+ assert permitted_to?(:show, :mocks)
29
+ assert !permitted_to?(:update, :mocks)
30
+
31
+ block_evaled = false
32
+ permitted_to?(:show, :mocks) do
33
+ block_evaled = true
34
+ end
35
+ assert block_evaled
36
+
37
+ block_evaled = false
38
+ permitted_to?(:update, :mocks) do
39
+ block_evaled = true
40
+ end
41
+ assert !block_evaled
42
+ end
43
+
44
+ def test_permit_with_object
45
+ reader = Authorization::Reader::DSLReader.new
46
+ reader.parse %{
47
+ authorization do
48
+ role :test_role do
49
+ has_permission_on :mocks do
50
+ to :show
51
+ if_attribute :test_attr => is {user.test_attr}
52
+ end
53
+ end
54
+ end
55
+ }
56
+ user = MockUser.new(:test_role, :test_attr => 1)
57
+ mock = MockDataObject.new(:test_attr => 1)
58
+ mock_2 = MockDataObject.new(:test_attr => 2)
59
+ request!(user, :action, reader)
60
+
61
+ assert permitted_to?(:show, mock)
62
+ assert permitted_to?(:show, :mocks)
63
+ assert !permitted_to?(:show, mock_2)
64
+ end
65
+
66
+ def test_permit_with_object_and_context
67
+ reader = Authorization::Reader::DSLReader.new
68
+ reader.parse %{
69
+ authorization do
70
+ role :test_role do
71
+ has_permission_on :other_mocks do
72
+ to :show
73
+ if_attribute :test_attr => is {user.test_attr}
74
+ end
75
+ end
76
+ end
77
+ }
78
+ user = MockUser.new(:test_role, :test_attr => 1)
79
+ mock = MockDataObject.new(:test_attr => 1)
80
+ mock_2 = MockDataObject.new(:test_attr => 2)
81
+ request!(user, :action, reader)
82
+
83
+ assert permitted_to?(:show, mock, :context => :other_mocks)
84
+ assert !permitted_to?(:show, mock_2, :context => :other_mocks)
85
+ end
86
+
87
+ def test_has_role
88
+ reader = Authorization::Reader::DSLReader.new
89
+ reader.parse %{
90
+ authorization do
91
+ role :test_role do
92
+ has_permission_on :mocks, :to => :show
93
+ end
94
+ end
95
+ }
96
+ user = MockUser.new(:test_role)
97
+ request!(user, :action, reader)
98
+
99
+ assert has_role?(:test_role)
100
+ assert !has_role?(:test_role2)
101
+ assert !has_role?(:test_role, :test_role2)
102
+
103
+ block_evaled = false
104
+ has_role?(:test_role) do
105
+ block_evaled = true
106
+ end
107
+ assert block_evaled
108
+
109
+ block_evaled = false
110
+ has_role?(:test_role2) do
111
+ block_evaled = true
112
+ end
113
+ assert !block_evaled
114
+ end
115
+
116
+ def test_has_any_role
117
+ reader = Authorization::Reader::DSLReader.new
118
+ reader.parse %{
119
+ authorization do
120
+ role :test_role do
121
+ has_permission_on :mocks, :to => :show
122
+ end
123
+ end
124
+ }
125
+ user = MockUser.new(:test_role)
126
+ request!(user, :action, reader)
127
+
128
+ assert has_any_role?(:test_role)
129
+ assert !has_any_role?(:test_role2)
130
+ assert has_any_role?(:test_role, :test_role2)
131
+
132
+ block_evaled = false
133
+ has_any_role?(:test_role) do
134
+ block_evaled = true
135
+ end
136
+ assert block_evaled
137
+
138
+ block_evaled = false
139
+ has_any_role?(:test_role2) do
140
+ block_evaled = true
141
+ end
142
+ assert !block_evaled
143
+
144
+ block_evaled = false
145
+ has_any_role?(:test_role,:test_role2) do
146
+ block_evaled = true
147
+ end
148
+ assert block_evaled
149
+ end
150
+
151
+ def test_has_role_with_guest_user
152
+ reader = Authorization::Reader::DSLReader.new
153
+ reader.parse %{
154
+ authorization do
155
+ end
156
+ }
157
+ request!(nil, :action, reader)
158
+
159
+ Authorization.stub :current_user, MockUser.new do
160
+ assert !has_role?(:test_role)
161
+
162
+ block_evaled = false
163
+ has_role?(:test_role) do
164
+ block_evaled = true
165
+ end
166
+ assert !block_evaled
167
+ end
168
+ end
169
+
170
+ def test_has_role_with_hierarchy
171
+ reader = Authorization::Reader::DSLReader.new
172
+ reader.parse %{
173
+ authorization do
174
+ role :test_role do
175
+ has_permission_on :mocks, :to => :show
176
+ end
177
+ role :other_role do
178
+ has_permission_on :another_mocks, :to => :show
179
+ end
180
+
181
+ role :root do
182
+ includes :test_role
183
+ end
184
+ end
185
+ }
186
+
187
+ user = MockUser.new(:root)
188
+ request!(user, :action, reader)
189
+
190
+ assert has_role_with_hierarchy?(:test_role)
191
+ assert !has_role_with_hierarchy?(:other_role)
192
+
193
+ block_evaled = false
194
+ has_role_with_hierarchy?(:test_role) do
195
+ block_evaled = true
196
+ end
197
+ assert block_evaled
198
+
199
+ block_evaled = false
200
+ has_role_with_hierarchy?(:test_role2) do
201
+ block_evaled = true
202
+ end
203
+ assert !block_evaled
204
+ end
205
+
206
+ def test_has_any_role_with_hierarchy
207
+ reader = Authorization::Reader::DSLReader.new
208
+ reader.parse %{
209
+ authorization do
210
+ role :test_role do
211
+ has_permission_on :mocks, :to => :show
212
+ end
213
+ role :other_role do
214
+ has_permission_on :another_mocks, :to => :show
215
+ end
216
+
217
+ role :root do
218
+ includes :test_role
219
+ end
220
+ end
221
+ }
222
+
223
+ user = MockUser.new(:root)
224
+ request!(user, :action, reader)
225
+
226
+ assert has_any_role_with_hierarchy?(:test_role)
227
+ assert !has_any_role_with_hierarchy?(:other_role)
228
+ assert has_any_role_with_hierarchy?(:test_role,:other_role)
229
+
230
+ block_evaled = false
231
+ has_any_role_with_hierarchy?(:test_role) do
232
+ block_evaled = true
233
+ end
234
+ assert block_evaled
235
+
236
+ block_evaled = false
237
+ has_any_role_with_hierarchy?(:test_role2) do
238
+ block_evaled = true
239
+ end
240
+ assert !block_evaled
241
+
242
+ block_evaled = false
243
+ has_any_role_with_hierarchy?(:test_role,:test_role2) do
244
+ block_evaled = true
245
+ end
246
+ assert block_evaled
247
+ end
248
+ end