trust 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -70,6 +70,21 @@ class Trust::Controller::ResourceTest < ActiveSupport::TestCase
70
70
  should 'resolve parameter' do
71
71
  assert_equal 'cool', @res.params
72
72
  end
73
+ context 'collection' do
74
+ should 'return array where parent represented' do
75
+ parent = stub('parent', :object => 12)
76
+ @res.expects(:association_name).with(parent).returns(15)
77
+ assert_equal [12, 15], @res.collection(parent)
78
+ end
79
+ should 'return class where no parent' do
80
+ assert_equal NameSpacedResource::MyEntity, @res.collection(nil)
81
+ end
82
+ should 'return with instance if present' do
83
+ parent = stub('parent', :object => 12)
84
+ @res.expects(:association_name).never
85
+ assert_equal [12, 15], @res.collection(parent, 15)
86
+ end
87
+ end
73
88
  end
74
89
 
75
90
  context 'Irregular Instance' do
@@ -216,34 +231,34 @@ class Trust::Controller::ResourceTest < ActiveSupport::TestCase
216
231
  setup do
217
232
  Trust::Controller::Resource.any_instance.expects(:extract_resource_info).with('child', {}).returns(@resource_info)
218
233
  Trust::Controller::Resource.any_instance.expects(:extract_parent_info).with({:parent => nil}, {}, @request).returns(@parent_info)
219
- end
220
- should 'instantiate properly' do
221
234
  @resource = Trust::Controller::Resource.new(@controller, @properties, 'new',{}, @request)
222
235
  end
223
236
  should 'discover variable names' do
224
- @resource = Trust::Controller::Resource.new(@controller, @properties, 'new',{}, @request)
225
237
  @resource_info.expects(:plural_name).returns(:children)
226
238
  assert_equal :child, @resource.send(:instance_name)
227
239
  assert_equal :parent, @resource.send(:parent_name)
228
240
  assert_equal :children, @resource.send(:plural_instance_name)
229
241
  end
230
242
  should 'have access to instances' do
231
- @resource = Trust::Controller::Resource.new(@controller, @properties, 'new',{}, @request)
232
243
  @resource.expects(:plural_instance_name).twice.returns(:children)
233
244
  @resource.instances = [1]
234
245
  assert_equal [1], @resource.instances
235
246
  assert_equal [1], @controller.instance_variable_get(:@children)
236
247
  end
237
248
  should 'have access to instantiated' do
238
- @resource = Trust::Controller::Resource.new(@controller, @properties, 'new',{}, @request)
239
249
  @resource.expects(:instances).returns(1)
240
250
  assert_equal 1, @resource.instantiated
241
251
  @resource.expects(:instances).returns(nil)
242
252
  @resource.expects(:instance).returns(2)
243
253
  assert_equal 2, @resource.instantiated
244
254
  end
255
+ should 'provide collection' do
256
+ @resource_info.expects(:collection).with(@parent_info, nil).returns(1)
257
+ assert_equal 1, @resource.collection
258
+ @resource_info.expects(:collection).with(@parent_info, 2).returns(3)
259
+ assert_equal 3, @resource.collection(2)
260
+ end
245
261
  should 'load as expected' do
246
- @resource = Trust::Controller::Resource.new(@controller, @properties, 'new',{}, @request)
247
262
  @resource_info.stubs(:params).returns({})
248
263
  @controller.expects(:respond_to?).with(:build).returns(false)
249
264
  @resource.load
@@ -254,5 +254,56 @@ class Trust::PermissionsTest < ActiveSupport::TestCase
254
254
  expect = {:tester => [[:hi, {:if=>:ho}], [:wink, {}], [:hi, {:if=>:ha}]]}
255
255
  assert_equal expect, TestOverride.permissions
256
256
  end
257
+
258
+ context 'with cannot' do
259
+ should 'not accept options' do
260
+ class TestCannnotArgumentError < Trust::Permissions
261
+ end
262
+ assert_raises ArgumentError do
263
+ TestCannnotArgumentError.cannot :do, :options => true
264
+ end
265
+ end
266
+ should 'revoke permissions' do
267
+ class TestBaseAuth3 < Trust::Permissions
268
+ role :tester, :friend do
269
+ can :hi, :if => :ho
270
+ can :wink
271
+ end
272
+ end
273
+ expect = {:tester => [[:hi, {:if => :ho}],[:wink, {}]], :friend => [[:hi, {:if => :ho}],[:wink, {}]]}
274
+ assert_equal expect, TestBaseAuth3.permissions
275
+ class TestCannot < TestBaseAuth3
276
+ role :tester, cannot(:wink)
277
+ role :friend do
278
+ cannot :hi
279
+ end
280
+ end
281
+ expect = {:tester => [[:hi, {:if => :ho}]], :friend => [[:wink, {}]]}
282
+ assert_equal expect, TestCannot.permissions
283
+ end
284
+ end
285
+ context 'with enforce' do
286
+ should 'override previous cans' do
287
+ class TestBaseAuth4 < Trust::Permissions
288
+ role :tester, :friend do
289
+ can :hi, :if => :ho
290
+ can :wink
291
+ end
292
+ end
293
+ expect = {:tester => [[:hi, {:if => :ho}],[:wink, {}]], :friend => [[:hi, {:if => :ho}],[:wink, {}]]}
294
+ assert_equal expect, TestBaseAuth4.permissions
295
+ class TestEnforce < TestBaseAuth4
296
+ role :tester, can(:wink, :enforce => true, :if => :yo)
297
+ role :friend do
298
+ can :hi, :enforce => true, :if => :sure
299
+ end
300
+ end
301
+ expect = {:tester => [[:hi, {:if => :ho}],[:wink, {:if => :yo}]], :friend => [[:wink, {}],[:hi, {:if => :sure}]]}
302
+ assert_equal expect, TestEnforce.permissions
303
+ # Parent permissions should not be affected
304
+ expect = {:tester => [[:hi, {:if => :ho}],[:wink, {}]], :friend => [[:hi, {:if => :ho}],[:wink, {}]]}
305
+ assert_equal expect, TestBaseAuth4.permissions
306
+ end
307
+ end
257
308
  end
258
309
  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.7.0
4
+ version: 0.8.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-23 00:00:00.000000000 Z
13
+ date: 2012-10-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -200,7 +200,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
200
200
  version: '0'
201
201
  segments:
202
202
  - 0
203
- hash: -3498159881798664050
203
+ hash: 608733387918017970
204
204
  required_rubygems_version: !ruby/object:Gem::Requirement
205
205
  none: false
206
206
  requirements:
@@ -209,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
209
  version: '0'
210
210
  segments:
211
211
  - 0
212
- hash: -3498159881798664050
212
+ hash: 608733387918017970
213
213
  requirements: []
214
214
  rubyforge_project:
215
215
  rubygems_version: 1.8.24