trust 0.6.3 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,80 @@
1
+ # Copyright (c) 2012 Bingo Entreprenøren AS
2
+ # Copyright (c) 2012 Teknobingo Scandinavia AS
3
+ # Copyright (c) 2012 Knut I. Stenmark
4
+ # Copyright (c) 2012 Patrick Hanevold
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining
7
+ # a copy of this software and associated documentation files (the
8
+ # "Software"), to deal in the Software without restriction, including
9
+ # without limitation the rights to use, copy, modify, merge, publish,
10
+ # distribute, sublicense, and/or sell copies of the Software, and to
11
+ # permit persons to whom the Software is furnished to do so, subject to
12
+ # the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be
15
+ # included in all copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
+
25
+ require 'test_helper'
26
+
27
+ class Trust::ActiveModelTest < ActiveSupport::TestCase
28
+ context 'permits?' do
29
+ setup do
30
+ @user = User.new
31
+ @account = Account.new
32
+ end
33
+ should 'support calls to authorized? on class level' do
34
+ Trust::Authorization.expects(:authorized?).with(:manage,Account,:foo)
35
+ Account.permits? :manage, :foo
36
+ end
37
+ should 'support calls to authorized? on instance' do
38
+ Trust::Authorization.expects(:authorized?).with(:manage,@account,:foo)
39
+ @account.permits? :manage, :foo
40
+ end
41
+ should 'support calls to authorized? with actor specified' do
42
+ Trust::Authorization.expects(:authorized?).with(:manage,Account,:foo, :by => :actor)
43
+ Account.permits? :manage, :foo, :by => :actor
44
+ Trust::Authorization.expects(:authorized?).with(:manage,@account,:foo, :by => :actor)
45
+ @account.permits? :manage, :foo, :by => :actor
46
+ end
47
+ should 'support calls to authorized? with actor specified and no parent' do
48
+ Trust::Authorization.expects(:authorized?).with(:manage,Account, :by => :actor)
49
+ Account.permits? :manage, :by => :actor
50
+ Trust::Authorization.expects(:authorized?).with(:manage,@account, :by => :actor)
51
+ @account.permits? :manage, :by => :actor
52
+ end
53
+ end
54
+ context 'ensure_permitted!' do
55
+ setup do
56
+ @user = User.new
57
+ @account = Account.new
58
+ end
59
+ should 'support calls to athorized! on class level' do
60
+ Trust::Authorization.expects(:authorize!).with(:manage,Account,:foo)
61
+ Account.ensure_permitted! :manage, :foo
62
+ end
63
+ should 'support calls to athorized! on instance' do
64
+ Trust::Authorization.expects(:authorize!).with(:manage,@account,:foo)
65
+ @account.ensure_permitted! :manage, :foo
66
+ end
67
+ should 'support calls to authorized! with actor specified' do
68
+ Trust::Authorization.expects(:authorize!).with(:manage,Account,:foo, :by => :actor)
69
+ Account.ensure_permitted! :manage, :foo, :by => :actor
70
+ Trust::Authorization.expects(:authorize!).with(:manage,@account,:foo, :by => :actor)
71
+ @account.ensure_permitted! :manage, :foo, :by => :actor
72
+ end
73
+ should 'support calls to authorized! with actor specified and no parent' do
74
+ Trust::Authorization.expects(:authorize!).with(:manage,Account, :by => :actor)
75
+ Account.ensure_permitted! :manage, :by => :actor
76
+ Trust::Authorization.expects(:authorize!).with(:manage,@account, :by => :actor)
77
+ @account.ensure_permitted! :manage, :by => :actor
78
+ end
79
+ end
80
+ end
@@ -24,33 +24,25 @@
24
24
 
25
25
  require 'test_helper'
26
26
 
27
- class Trust::ActiveRecordTest < ActiveSupport::TestCase
28
- context 'permits?' do
29
- setup do
30
- @user = User.new
31
- @account = Account.new
32
- end
33
- should 'support calls to athorized? on class level' do
34
- Trust::Authorization.expects(:authorized?).with(:manage,Account,:foo)
35
- Account.permits? :manage, :foo
36
- end
37
- should 'support calls to athorized? on instance' do
38
- Trust::Authorization.expects(:authorized?).with(:manage,@account,:foo)
39
- @account.permits? :manage, :foo
40
- end
27
+ class Trust::ActorTest < ActiveSupport::TestCase
28
+ class User
29
+ include ::Trust::Actor
41
30
  end
42
- context 'ensure_permitted!' do
31
+
32
+ context 'can?' do
43
33
  setup do
44
34
  @user = User.new
45
35
  @account = Account.new
46
36
  end
47
- should 'support calls to athorized? on class level' do
48
- Trust::Authorization.expects(:authorize!).with(:manage,Account,:foo)
49
- Account.ensure_permitted! :manage, :foo
50
- end
51
- should 'support calls to athorized? on instance' do
52
- Trust::Authorization.expects(:authorize!).with(:manage,@account,:foo)
53
- @account.ensure_permitted! :manage, :foo
37
+ should 'support calls to authorized? on instance' do
38
+ Trust::Authorization.expects(:authorized?).with(:manage,@account, :by => @user, :parent => nil)
39
+ @user.can? :manage, @account
40
+ Trust::Authorization.expects(:authorized?).with(:manage,@account, :by => @user, :parent => :foo)
41
+ @user.can? :manage, @account, :foo
42
+ Trust::Authorization.expects(:authorized?).with(:manage,@account, :by => @user, :parent => :foo)
43
+ @user.can? :manage, @account, :parent => :foo
44
+ Trust::Authorization.expects(:authorized?).with(:manage,@account, :by => @user, :parent => :foo)
45
+ @user.can? :manage, @account, :for => :foo
54
46
  end
55
47
  end
56
48
  end
@@ -65,34 +65,52 @@ class Trust::AuthorizationTest < ActiveSupport::TestCase
65
65
  setup do
66
66
  class Validator
67
67
  end
68
- class TestAuthorizing
68
+ class TestAuthorizing # overrides authorizing_class
69
69
  def initialize(user, action, klass, object, parent)
70
70
  Validator.values user, action, klass, object, parent
71
71
  end
72
72
  end
73
- Trust::Authorization.expects(:user).returns(:user)
74
- TestAuthorizing.any_instance.expects(:authorized?).returns(true)
73
+ TestAuthorizing.any_instance.stubs(:authorized?).returns(true)
75
74
  Trust::Authorization.expects(:authorizing_class).with(String).returns(TestAuthorizing)
76
75
  end
77
76
  should 'instanciate authorizing class and set correct parameters for object' do
77
+ Trust::Authorization.expects(:user).returns(:user)
78
78
  Validator.expects(:values).with(:user, :action, String, 'object_or_class', :parent)
79
79
  assert Trust::Authorization.authorized?('action', 'object_or_class', :parent)
80
80
  end
81
81
  should 'instanciate authorizing class and set correct parameters for class' do
82
+ Trust::Authorization.expects(:user).returns(:user)
82
83
  Validator.expects(:values).with(:user, :action, String, nil, :parent)
83
84
  assert Trust::Authorization.authorized?('action', String, :parent)
84
85
  end
86
+ should 'allow actor to override user with actor' do
87
+ Validator.expects(:values).with('TheActor', :action, String, nil, :parent)
88
+ assert Trust::Authorization.authorized?('action', String, :parent, :by => 'TheActor')
89
+ Trust::Authorization.expects(:authorizing_class).with(String).returns(TestAuthorizing)
90
+ Validator.expects(:values).with('TheActor', :action, String, nil, nil)
91
+ assert Trust::Authorization.authorized?('action', String, :by => 'TheActor')
92
+ end
93
+ should 'support option for :parent' do
94
+ Trust::Authorization.expects(:user).returns(:user)
95
+ Validator.expects(:values).with(:user, :action, String, nil, 'parent')
96
+ assert Trust::Authorization.authorized?('action', String, :parent => 'parent')
97
+ end
98
+ should 'support option alias for :parent, namely :for' do
99
+ Trust::Authorization.expects(:user).returns(:user)
100
+ Validator.expects(:values).with(:user, :action, String, nil, 'parent')
101
+ assert Trust::Authorization.authorized?('action', String, :for => 'parent')
102
+ end
85
103
  end
86
104
 
87
105
  context 'authorize!' do
88
106
  should 'call access_denied! unless authorized?' do
89
107
  Trust::Authorization.expects(:access_denied!).once
90
- Trust::Authorization.expects(:authorized?).with(1, 2, 3).returns(false)
108
+ Trust::Authorization.expects(:authorized?).with(1, 2, 3, {}).returns(false)
91
109
  Trust::Authorization.authorize!(1,2,3)
92
110
  end
93
111
  should 'call access_denied! if authorized?' do
94
112
  Trust::Authorization.expects(:access_denied!).never
95
- Trust::Authorization.expects(:authorized?).with(1, 2, 3).returns(true)
113
+ Trust::Authorization.expects(:authorized?).with(1, 2, 3, {}).returns(true)
96
114
  Trust::Authorization.authorize!(1,2,3)
97
115
  end
98
116
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trust
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-09-13 00:00:00.000000000 Z
13
+ date: 2012-09-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -59,7 +59,8 @@ extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
61
  - lib/tasks/trust_tasks.rake
62
- - lib/trust/active_record.rb
62
+ - lib/trust/active_model.rb
63
+ - lib/trust/actor.rb
63
64
  - lib/trust/authorization.rb
64
65
  - lib/trust/controller/properties.rb
65
66
  - lib/trust/controller/resource.rb
@@ -151,6 +152,7 @@ files:
151
152
  - test/dummy/db/migrate/20120523144144_create_clients.rb
152
153
  - test/dummy/db/schema.rb
153
154
  - test/dummy/db/test.sqlite3
155
+ - test/dummy/log/development.log
154
156
  - test/dummy/log/test.log
155
157
  - test/dummy/public/404.html
156
158
  - test/dummy/public/422.html
@@ -176,7 +178,8 @@ files:
176
178
  - test/dummy/test/unit/user_test.rb
177
179
  - test/test_helper.rb
178
180
  - test/trust_test.rb
179
- - test/unit/trust/active_record_test.rb
181
+ - test/unit/trust/active_model_test.rb
182
+ - test/unit/trust/actor_test.rb
180
183
  - test/unit/trust/authorization_test.rb
181
184
  - test/unit/trust/controller/properties_test.rb
182
185
  - test/unit/trust/controller/resource_test.rb
@@ -197,7 +200,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
197
200
  version: '0'
198
201
  segments:
199
202
  - 0
200
- hash: -4551844611628128017
203
+ hash: -3498159881798664050
201
204
  required_rubygems_version: !ruby/object:Gem::Requirement
202
205
  none: false
203
206
  requirements:
@@ -206,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
209
  version: '0'
207
210
  segments:
208
211
  - 0
209
- hash: -4551844611628128017
212
+ hash: -3498159881798664050
210
213
  requirements: []
211
214
  rubyforge_project:
212
215
  rubygems_version: 1.8.24
@@ -292,6 +295,7 @@ test_files:
292
295
  - test/dummy/db/migrate/20120523144144_create_clients.rb
293
296
  - test/dummy/db/schema.rb
294
297
  - test/dummy/db/test.sqlite3
298
+ - test/dummy/log/development.log
295
299
  - test/dummy/log/test.log
296
300
  - test/dummy/public/404.html
297
301
  - test/dummy/public/422.html
@@ -317,7 +321,8 @@ test_files:
317
321
  - test/dummy/test/unit/user_test.rb
318
322
  - test/test_helper.rb
319
323
  - test/trust_test.rb
320
- - test/unit/trust/active_record_test.rb
324
+ - test/unit/trust/active_model_test.rb
325
+ - test/unit/trust/actor_test.rb
321
326
  - test/unit/trust/authorization_test.rb
322
327
  - test/unit/trust/controller/properties_test.rb
323
328
  - test/unit/trust/controller/resource_test.rb