id_please 0.4.0 → 0.5.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.
- data/VERSION +1 -1
- data/id_please.gemspec +2 -2
- data/lib/id_please/model_extensions/for_group.rb +72 -23
- data/test/debug.log +178721 -0
- data/test/roles_test.rb +34 -21
- data/test/support/models.rb +12 -0
- data/test/support/schema.rb +9 -3
- metadata +2 -2
data/test/roles_test.rb
CHANGED
@@ -6,8 +6,8 @@ class ActiveSupport::TestCase
|
|
6
6
|
setup do
|
7
7
|
Role.delete_all
|
8
8
|
[subject_class, Foo, Bar, Uuid].each { |c| c.delete_all }
|
9
|
-
@subject1 = subject_class.create!
|
10
|
-
@subject2 = subject_class.create!
|
9
|
+
@subject1 = subject_class.create!(:name => "#{subject_class.to_s}1")
|
10
|
+
@subject2 = subject_class.create!(:name => "#{subject_class.to_s}2")
|
11
11
|
@foo = Foo.create!
|
12
12
|
@bar = Bar.create!
|
13
13
|
@uuid = Uuid.create!(:uuid => "C41642EE-2780-0001-189F-17F3101B26E0")
|
@@ -216,14 +216,14 @@ class RolesTest < ActiveSupport::TestCase
|
|
216
216
|
|
217
217
|
context "group testing: " do
|
218
218
|
setup do
|
219
|
-
@user1 = User.create!
|
220
|
-
@user2 = User.create!
|
221
|
-
@user3 = User.create!
|
222
|
-
@group1 = Group.create!
|
223
|
-
@group2 = Group.create!
|
224
|
-
@group3 = Group.create!
|
225
|
-
@group4 = Group.create!
|
226
|
-
@group5 = Group.create!
|
219
|
+
@user1 = User.create!(:name => "User1")
|
220
|
+
@user2 = User.create!(:name => "User2")
|
221
|
+
@user3 = User.create!(:name => "User3")
|
222
|
+
@group1 = Group.create!(:name => "Group1")
|
223
|
+
@group2 = Group.create!(:name => "Group2")
|
224
|
+
@group3 = Group.create!(:name => "Group3")
|
225
|
+
@group4 = Group.create!(:name => "Group4")
|
226
|
+
@group5 = Group.create!(:name => "Group5")
|
227
227
|
|
228
228
|
|
229
229
|
@foo = Foo.create!
|
@@ -249,9 +249,13 @@ class RolesTest < ActiveSupport::TestCase
|
|
249
249
|
@user1.in_group!(@group1)
|
250
250
|
@group1.in_group!(@group2)
|
251
251
|
@group2.in_group!(@group4)
|
252
|
+
@user1.in_group!(@group4)
|
252
253
|
|
253
254
|
@user1.in_group!(@group3)
|
254
255
|
@user2.in_group!(@group2)
|
256
|
+
|
257
|
+
@user3.has_role!(:owner, @group4)
|
258
|
+
|
255
259
|
end
|
256
260
|
|
257
261
|
should "avoid circularity" do
|
@@ -272,7 +276,7 @@ class RolesTest < ActiveSupport::TestCase
|
|
272
276
|
end
|
273
277
|
|
274
278
|
should "handle nested groups" do
|
275
|
-
assert_same_elements @user1.groups(:nested => false), [@group1, @group3]
|
279
|
+
assert_same_elements @user1.groups(:nested => false), [@group1, @group3, @group4]
|
276
280
|
assert_same_elements @user1.groups, [@group1, @group2, @group3, @group4]
|
277
281
|
assert_same_elements @user2.groups, [@group2, @group4]
|
278
282
|
|
@@ -281,30 +285,39 @@ class RolesTest < ActiveSupport::TestCase
|
|
281
285
|
|
282
286
|
assert @group4.accepts_role?(:member, @user1)
|
283
287
|
assert @group2.accepts_role?(:member, @user1)
|
284
|
-
|
288
|
+
|
289
|
+
assert @group4.accepts_role?(:member, @user1, :check_groups => false)
|
290
|
+
@user1.not_in_group!(@group4)
|
285
291
|
assert_false @group4.accepts_role?(:member, @user1, :check_groups => false)
|
286
292
|
end
|
287
293
|
|
288
294
|
should "be able to filter children based on roles" do
|
289
|
-
assert_same_elements @group4.children(:roles => :any), [@group2, @group1, @user1, @user2]
|
290
|
-
assert_same_elements @group4.children(:roles => [:member]), [@group2, @group1, @user1, @user2]
|
291
|
-
assert_same_elements @group4.children(:roles => [:owner]), []
|
292
|
-
|
293
|
-
|
294
|
-
@user3.has_role!(:owner, @group4)
|
295
|
-
|
296
295
|
assert_same_elements @group4.children(), [@group2, @group1, @user1, @user2]
|
297
296
|
assert_same_elements @group4.children(:roles => :any), [@group2, @group1, @user1, @user2, @user3]
|
298
297
|
assert_same_elements @group4.children(:roles => [:member]), [@group2, @group1, @user1, @user2]
|
299
298
|
assert_same_elements @group4.children(:roles => [:owner]), [@user3]
|
300
|
-
|
301
299
|
end
|
302
300
|
|
303
301
|
should "be able to display hashes of subject permissions" do
|
304
|
-
@user3.has_role!(:owner, @group4)
|
305
302
|
assert_equal @group4.children(:roles => :any, :view => :subject_hash), {@group2 => [:member], @group1 => [:member], @user1 => [:member], @user2 => [:member], @user3 => [:owner]}
|
306
303
|
end
|
307
304
|
|
305
|
+
should "display a list of roles, or a hash of roles to users" do
|
306
|
+
assert_same_elements @group4.children(:roles => :any, :view => :roles), [:member, :owner]
|
307
|
+
|
308
|
+
role_hash = @group4.children(:roles => :any, :view => :role_hash)
|
309
|
+
assert_same_elements role_hash[:member], [@group1, @group2, @user1, @user2]
|
310
|
+
assert_same_elements role_hash[:owner], [@user3]
|
311
|
+
end
|
312
|
+
|
313
|
+
should "display a hash of roles to users with the relevant groups attached" do
|
314
|
+
role_with_assignments = @group4.children(:roles => :any, :view => :role_with_assignments)
|
315
|
+
assert_equal role_with_assignments[:owner], {@user3 => [@group4]}
|
316
|
+
assert_same_elements role_with_assignments[:member].keys, [@user1, @user2, @group1, @group2]
|
317
|
+
assert_equal role_with_assignments[:member], {@group2 => [@group4], @group1 => [@group2], @user1 => [@group1, @group4], @user2 => [@group2]}
|
318
|
+
|
319
|
+
end
|
320
|
+
|
308
321
|
should "check roles based on groups" do
|
309
322
|
|
310
323
|
assert @user2.has_role?(:member, @group2)
|
data/test/support/models.rb
CHANGED
@@ -9,14 +9,26 @@ end
|
|
9
9
|
|
10
10
|
class User < ActiveRecord::Base
|
11
11
|
acts_as_authorization_subject
|
12
|
+
|
13
|
+
def to_s
|
14
|
+
name
|
15
|
+
end
|
12
16
|
end
|
13
17
|
|
14
18
|
class UserNoGroup < ActiveRecord::Base
|
15
19
|
acts_as_authorization_subject :groups_enabled => false, :nested_groups => false
|
20
|
+
|
21
|
+
def to_s
|
22
|
+
name
|
23
|
+
end
|
16
24
|
end
|
17
25
|
|
18
26
|
class Group < ActiveRecord::Base
|
19
27
|
acts_as_authorization_group
|
28
|
+
|
29
|
+
def to_s
|
30
|
+
name
|
31
|
+
end
|
20
32
|
end
|
21
33
|
|
22
34
|
class Foo < ActiveRecord::Base
|
data/test/support/schema.rb
CHANGED
@@ -6,9 +6,13 @@ ActiveRecord::Schema.define(:version => 0) do
|
|
6
6
|
t.timestamps
|
7
7
|
end
|
8
8
|
|
9
|
-
create_table "users", :force => true do |t|
|
9
|
+
create_table "users", :force => true do |t|
|
10
|
+
t.string "name"
|
11
|
+
end
|
10
12
|
|
11
|
-
create_table "user_no_groups", :force => true do |t|
|
13
|
+
create_table "user_no_groups", :force => true do |t|
|
14
|
+
t.string "name"
|
15
|
+
end
|
12
16
|
|
13
17
|
create_table "roles", :force => true do |t|
|
14
18
|
t.string "name", :limit => 50, :null => false
|
@@ -17,7 +21,9 @@ ActiveRecord::Schema.define(:version => 0) do
|
|
17
21
|
t.timestamps
|
18
22
|
end
|
19
23
|
|
20
|
-
create_table "groups", :force => true do |t|
|
24
|
+
create_table "groups", :force => true do |t|
|
25
|
+
t.string "name"
|
26
|
+
end
|
21
27
|
|
22
28
|
create_table "foos", :force => true do |t|
|
23
29
|
t.timestamps
|
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.5.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-18 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|