stffn-declarative_authorization 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,7 +8,7 @@ module Authorization
8
8
 
9
9
  # If the user meets the given privilege, permitted_to? returns true
10
10
  # and yields to the optional block.
11
- def permitted_to? (privilege, options = {} )
11
+ def permitted_to? (privilege, options = {}, &block)
12
12
  options = {
13
13
  :user => Authorization.current_user,
14
14
  :object => self
@@ -1168,4 +1168,48 @@ class ModelTest < Test::Unit::TestCase
1168
1168
  TestModel.delete_all
1169
1169
  TestAttr.delete_all
1170
1170
  end
1171
+
1172
+ def test_model_permitted_to
1173
+ reader = Authorization::Reader::DSLReader.new
1174
+ reader.parse %{
1175
+ authorization do
1176
+ role :test_role do
1177
+ has_permission_on :companies, :to => :read do
1178
+ if_attribute :name => "company_1"
1179
+ end
1180
+ end
1181
+ end
1182
+ }
1183
+ Authorization::Engine.instance(reader)
1184
+
1185
+ user = MockUser.new(:test_role)
1186
+ allowed_read_company = Company.new(:name => 'company_1')
1187
+ prohibited_company = Company.new(:name => 'company_2')
1188
+
1189
+ assert allowed_read_company.permitted_to?(:read, :user => user)
1190
+ assert !allowed_read_company.permitted_to?(:update, :user => user)
1191
+ assert !prohibited_company.permitted_to?(:read, :user => user)
1192
+
1193
+ executed_block = false
1194
+ allowed_read_company.permitted_to?(:read, :user => user) do
1195
+ executed_block = true
1196
+ end
1197
+ assert executed_block
1198
+
1199
+ executed_block = false
1200
+ prohibited_company.permitted_to?(:read, :user => user) do
1201
+ executed_block = true
1202
+ end
1203
+ assert !executed_block
1204
+
1205
+ assert_nothing_raised do
1206
+ allowed_read_company.permitted_to!(:read, :user => user)
1207
+ end
1208
+ assert_raise Authorization::NotAuthorized do
1209
+ prohibited_company.permitted_to!(:update, :user => user)
1210
+ end
1211
+ assert_raise Authorization::AttributeAuthorizationError do
1212
+ prohibited_company.permitted_to!(:read, :user => user)
1213
+ end
1214
+ end
1171
1215
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stffn-declarative_authorization
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steffen Bartsch