id_please 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/id_please.gemspec +3 -2
- data/lib/id_please.rb +1 -0
- data/lib/id_please/assignment_map.rb +137 -0
- data/lib/id_please/model_extensions/for_assignment.rb +9 -0
- data/lib/id_please/model_extensions/for_group.rb +2 -77
- data/test/database.yml +2 -2
- data/test/debug.log +155811 -0
- data/test/roles_test.rb +29 -14
- data/test/test_helper.rb +17 -0
- metadata +3 -2
data/test/roles_test.rb
CHANGED
@@ -280,9 +280,10 @@ class RolesTest < ActiveSupport::TestCase
|
|
280
280
|
assert_same_elements @user1.groups, [@group1, @group2, @group3, @group4]
|
281
281
|
assert_same_elements @user2.groups, [@group2, @group4]
|
282
282
|
|
283
|
-
assert_same_elements @group4.children, [@group2, @group1, @user1, @user2]
|
283
|
+
assert_same_elements @group4.children, [@group2, @group1, @user1, @user2, @user3]
|
284
284
|
assert_same_elements @group2.children, [@group1, @user1, @user2]
|
285
|
-
|
285
|
+
assert_same_elements @group2.children(:nested => false), [@group1, @user2]
|
286
|
+
|
286
287
|
assert @group4.accepts_role?(:member, @user1)
|
287
288
|
assert @group2.accepts_role?(:member, @user1)
|
288
289
|
|
@@ -291,30 +292,23 @@ class RolesTest < ActiveSupport::TestCase
|
|
291
292
|
assert_false @group4.accepts_role?(:member, @user1, :check_groups => false)
|
292
293
|
end
|
293
294
|
|
294
|
-
should "be able to filter children based on roles" do
|
295
|
-
assert_same_elements @group4.children(), [@group2, @group1, @user1, @user2]
|
296
|
-
assert_same_elements @group4.children(:roles => :any), [@group2, @group1, @user1, @user2, @user3]
|
297
|
-
assert_same_elements @group4.children(:roles => [:member]), [@group2, @group1, @user1, @user2]
|
298
|
-
assert_same_elements @group4.children(:roles => [:owner]), [@user3]
|
299
|
-
end
|
300
|
-
|
301
295
|
should "be able to display hashes of subject permissions" do
|
302
|
-
assert_equal @group4.children(:
|
296
|
+
assert_equal @group4.children(:view => :subject_hash), {@group2 => [:member], @group1 => [:member], @user1 => [:member], @user2 => [:member], @user3 => [:owner]}
|
303
297
|
end
|
304
298
|
|
305
299
|
should "display a list of roles, or a hash of roles to users" do
|
306
|
-
assert_same_elements @group4.children(:
|
300
|
+
assert_same_elements @group4.children(:view => :roles), [:member, :owner]
|
307
301
|
|
308
|
-
role_hash = @group4.children(:
|
302
|
+
role_hash = @group4.children(:view => :role_hash)
|
309
303
|
assert_same_elements role_hash[:member], [@group1, @group2, @user1, @user2]
|
310
304
|
assert_same_elements role_hash[:owner], [@user3]
|
311
305
|
end
|
312
306
|
|
313
307
|
should "display a hash of roles to users with the relevant groups attached" do
|
314
|
-
role_with_assignments = @group4.children(:
|
308
|
+
role_with_assignments = @group4.children(:view => :role_with_assignments)
|
315
309
|
assert_equal role_with_assignments[:owner], {@user3 => [@group4]}
|
316
310
|
assert_same_elements role_with_assignments[:member].keys, [@user1, @user2, @group1, @group2]
|
317
|
-
|
311
|
+
assert_same_elements_in_hash role_with_assignments[:member], {@group2 => [@group4], @group1 => [@group2], @user1 => [@group1, @group4], @user2 => [@group2]}
|
318
312
|
|
319
313
|
end
|
320
314
|
|
@@ -340,6 +334,27 @@ class RolesTest < ActiveSupport::TestCase
|
|
340
334
|
|
341
335
|
end
|
342
336
|
|
337
|
+
context "given a group which is both an member and an owner" do
|
338
|
+
setup do
|
339
|
+
@user1.in_group!(@group1)
|
340
|
+
@group1.in_group!(@group2)
|
341
|
+
@group1.has_role!(:owner, @group2)
|
342
|
+
end
|
343
|
+
|
344
|
+
should "propagate multiple roles through nested groups" do
|
345
|
+
@user1.has_role?(:owner, @group2)
|
346
|
+
@user1.has_role?(:member, @group2)
|
347
|
+
end
|
348
|
+
|
349
|
+
should "display handle multiple roles propagated through the children function" do
|
350
|
+
assert_same_elements @group2.children(:view => :roles), [:member, :owner]
|
351
|
+
role_hash = @group2.children(:view => :role_hash)
|
352
|
+
|
353
|
+
assert_same_elements role_hash[:member], [@group1, @user1]
|
354
|
+
assert_same_elements role_hash[:owner], [@group1, @user1]
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
343
358
|
end
|
344
359
|
end
|
345
360
|
|
data/test/test_helper.rb
CHANGED
@@ -42,5 +42,22 @@ module Test::Unit::Assertions
|
|
42
42
|
def assert_false(object, message="")
|
43
43
|
assert_equal(false, object, message)
|
44
44
|
end
|
45
|
+
|
46
|
+
def assert_same_elements_in_hash(hash1, hash2, message = "")
|
47
|
+
assert_kind_of Hash, hash1, message + "First object must be a hash"
|
48
|
+
assert_kind_of Hash, hash2, message + "Second object must be a hash"
|
49
|
+
assert_equal hash1.keys, hash2.keys, "Keys of hashes mismatch"
|
50
|
+
|
51
|
+
hash1.each_pair do |k, v|
|
52
|
+
case v
|
53
|
+
when Hash
|
54
|
+
assert_same_elements_in_hash v,hash2[k], message + "Under key #{k.inspect} "
|
55
|
+
when Array
|
56
|
+
assert_same_elements v, hash2[k], message + "Under key #{k.inspect} "
|
57
|
+
else
|
58
|
+
assert_equal v, hash2[k], message + "Under key #{k.inspect} "
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
45
62
|
end
|
46
63
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: id_please
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Stuart
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-19 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -71,6 +71,7 @@ files:
|
|
71
71
|
- VERSION
|
72
72
|
- id_please.gemspec
|
73
73
|
- lib/id_please.rb
|
74
|
+
- lib/id_please/assignment_map.rb
|
74
75
|
- lib/id_please/config.rb
|
75
76
|
- lib/id_please/model_extensions.rb
|
76
77
|
- lib/id_please/model_extensions/for_assignment.rb
|