average_roles 0.0.1
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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +34 -0
- data/config/initializers/average_roles.rb +8 -0
- data/lib/average_roles.rb +25 -0
- data/lib/average_roles/engine.rb +4 -0
- data/lib/average_roles/models/concerns/role.rb +22 -0
- data/lib/average_roles/models/concerns/user.rb +130 -0
- data/lib/average_roles/version.rb +3 -0
- data/lib/tasks/average_roles_tasks.rake +4 -0
- data/test/average_roles_test.rb +7 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/role.rb +3 -0
- data/test/dummy/app/models/user.rb +3 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +24 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +89 -0
- data/test/dummy/config/database.yml.travis +4 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +78 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/assets.rb +8 -0
- data/test/dummy/config/initializers/average_roles.rb +8 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +56 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/db/migrate/20140929035502_create_users.rb +9 -0
- data/test/dummy/db/migrate/20140929035606_create_roles.rb +13 -0
- data/test/dummy/db/migrate/20140929070323_create_roles_users.rb +8 -0
- data/test/dummy/db/schema.rb +34 -0
- data/test/dummy/log/development.log +15 -0
- data/test/dummy/log/test.log +18907 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/test/fixtures/roles.yml +37 -0
- data/test/dummy/test/fixtures/users.yml +16 -0
- data/test/dummy/test/models/role_test.rb +81 -0
- data/test/dummy/test/models/user_test.rb +184 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +46 -0
- metadata +196 -0
@@ -0,0 +1,67 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The page you were looking for doesn't exist (404)</title>
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
6
|
+
<style>
|
7
|
+
body {
|
8
|
+
background-color: #EFEFEF;
|
9
|
+
color: #2E2F30;
|
10
|
+
text-align: center;
|
11
|
+
font-family: arial, sans-serif;
|
12
|
+
margin: 0;
|
13
|
+
}
|
14
|
+
|
15
|
+
div.dialog {
|
16
|
+
width: 95%;
|
17
|
+
max-width: 33em;
|
18
|
+
margin: 4em auto 0;
|
19
|
+
}
|
20
|
+
|
21
|
+
div.dialog > div {
|
22
|
+
border: 1px solid #CCC;
|
23
|
+
border-right-color: #999;
|
24
|
+
border-left-color: #999;
|
25
|
+
border-bottom-color: #BBB;
|
26
|
+
border-top: #B00100 solid 4px;
|
27
|
+
border-top-left-radius: 9px;
|
28
|
+
border-top-right-radius: 9px;
|
29
|
+
background-color: white;
|
30
|
+
padding: 7px 12% 0;
|
31
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
32
|
+
}
|
33
|
+
|
34
|
+
h1 {
|
35
|
+
font-size: 100%;
|
36
|
+
color: #730E15;
|
37
|
+
line-height: 1.5em;
|
38
|
+
}
|
39
|
+
|
40
|
+
div.dialog > p {
|
41
|
+
margin: 0 0 1em;
|
42
|
+
padding: 1em;
|
43
|
+
background-color: #F7F7F7;
|
44
|
+
border: 1px solid #CCC;
|
45
|
+
border-right-color: #999;
|
46
|
+
border-left-color: #999;
|
47
|
+
border-bottom-color: #999;
|
48
|
+
border-bottom-left-radius: 4px;
|
49
|
+
border-bottom-right-radius: 4px;
|
50
|
+
border-top-color: #DADADA;
|
51
|
+
color: #666;
|
52
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
53
|
+
}
|
54
|
+
</style>
|
55
|
+
</head>
|
56
|
+
|
57
|
+
<body>
|
58
|
+
<!-- This file lives in public/404.html -->
|
59
|
+
<div class="dialog">
|
60
|
+
<div>
|
61
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
62
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
63
|
+
</div>
|
64
|
+
<p>If you are the application owner check the logs for more information.</p>
|
65
|
+
</div>
|
66
|
+
</body>
|
67
|
+
</html>
|
@@ -0,0 +1,67 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The change you wanted was rejected (422)</title>
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
6
|
+
<style>
|
7
|
+
body {
|
8
|
+
background-color: #EFEFEF;
|
9
|
+
color: #2E2F30;
|
10
|
+
text-align: center;
|
11
|
+
font-family: arial, sans-serif;
|
12
|
+
margin: 0;
|
13
|
+
}
|
14
|
+
|
15
|
+
div.dialog {
|
16
|
+
width: 95%;
|
17
|
+
max-width: 33em;
|
18
|
+
margin: 4em auto 0;
|
19
|
+
}
|
20
|
+
|
21
|
+
div.dialog > div {
|
22
|
+
border: 1px solid #CCC;
|
23
|
+
border-right-color: #999;
|
24
|
+
border-left-color: #999;
|
25
|
+
border-bottom-color: #BBB;
|
26
|
+
border-top: #B00100 solid 4px;
|
27
|
+
border-top-left-radius: 9px;
|
28
|
+
border-top-right-radius: 9px;
|
29
|
+
background-color: white;
|
30
|
+
padding: 7px 12% 0;
|
31
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
32
|
+
}
|
33
|
+
|
34
|
+
h1 {
|
35
|
+
font-size: 100%;
|
36
|
+
color: #730E15;
|
37
|
+
line-height: 1.5em;
|
38
|
+
}
|
39
|
+
|
40
|
+
div.dialog > p {
|
41
|
+
margin: 0 0 1em;
|
42
|
+
padding: 1em;
|
43
|
+
background-color: #F7F7F7;
|
44
|
+
border: 1px solid #CCC;
|
45
|
+
border-right-color: #999;
|
46
|
+
border-left-color: #999;
|
47
|
+
border-bottom-color: #999;
|
48
|
+
border-bottom-left-radius: 4px;
|
49
|
+
border-bottom-right-radius: 4px;
|
50
|
+
border-top-color: #DADADA;
|
51
|
+
color: #666;
|
52
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
53
|
+
}
|
54
|
+
</style>
|
55
|
+
</head>
|
56
|
+
|
57
|
+
<body>
|
58
|
+
<!-- This file lives in public/422.html -->
|
59
|
+
<div class="dialog">
|
60
|
+
<div>
|
61
|
+
<h1>The change you wanted was rejected.</h1>
|
62
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
63
|
+
</div>
|
64
|
+
<p>If you are the application owner check the logs for more information.</p>
|
65
|
+
</div>
|
66
|
+
</body>
|
67
|
+
</html>
|
@@ -0,0 +1,66 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>We're sorry, but something went wrong (500)</title>
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
6
|
+
<style>
|
7
|
+
body {
|
8
|
+
background-color: #EFEFEF;
|
9
|
+
color: #2E2F30;
|
10
|
+
text-align: center;
|
11
|
+
font-family: arial, sans-serif;
|
12
|
+
margin: 0;
|
13
|
+
}
|
14
|
+
|
15
|
+
div.dialog {
|
16
|
+
width: 95%;
|
17
|
+
max-width: 33em;
|
18
|
+
margin: 4em auto 0;
|
19
|
+
}
|
20
|
+
|
21
|
+
div.dialog > div {
|
22
|
+
border: 1px solid #CCC;
|
23
|
+
border-right-color: #999;
|
24
|
+
border-left-color: #999;
|
25
|
+
border-bottom-color: #BBB;
|
26
|
+
border-top: #B00100 solid 4px;
|
27
|
+
border-top-left-radius: 9px;
|
28
|
+
border-top-right-radius: 9px;
|
29
|
+
background-color: white;
|
30
|
+
padding: 7px 12% 0;
|
31
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
32
|
+
}
|
33
|
+
|
34
|
+
h1 {
|
35
|
+
font-size: 100%;
|
36
|
+
color: #730E15;
|
37
|
+
line-height: 1.5em;
|
38
|
+
}
|
39
|
+
|
40
|
+
div.dialog > p {
|
41
|
+
margin: 0 0 1em;
|
42
|
+
padding: 1em;
|
43
|
+
background-color: #F7F7F7;
|
44
|
+
border: 1px solid #CCC;
|
45
|
+
border-right-color: #999;
|
46
|
+
border-left-color: #999;
|
47
|
+
border-bottom-color: #999;
|
48
|
+
border-bottom-left-radius: 4px;
|
49
|
+
border-bottom-right-radius: 4px;
|
50
|
+
border-top-color: #DADADA;
|
51
|
+
color: #666;
|
52
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
53
|
+
}
|
54
|
+
</style>
|
55
|
+
</head>
|
56
|
+
|
57
|
+
<body>
|
58
|
+
<!-- This file lives in public/500.html -->
|
59
|
+
<div class="dialog">
|
60
|
+
<div>
|
61
|
+
<h1>We're sorry, but something went wrong.</h1>
|
62
|
+
</div>
|
63
|
+
<p>If you are the application owner check the logs for more information.</p>
|
64
|
+
</div>
|
65
|
+
</body>
|
66
|
+
</html>
|
File without changes
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
2
|
+
|
3
|
+
administrator:
|
4
|
+
name: Administrator
|
5
|
+
identifier: administrator
|
6
|
+
description: Administrator role
|
7
|
+
users: administrator
|
8
|
+
active: true
|
9
|
+
|
10
|
+
user:
|
11
|
+
name: User
|
12
|
+
identifier: user
|
13
|
+
description: User role
|
14
|
+
parent: administrator
|
15
|
+
users: user
|
16
|
+
active: true
|
17
|
+
|
18
|
+
guest:
|
19
|
+
name: Guest
|
20
|
+
identifier: guest
|
21
|
+
description: Guest role
|
22
|
+
parent: user
|
23
|
+
users: guest, user
|
24
|
+
active: true
|
25
|
+
|
26
|
+
no_user:
|
27
|
+
name: No User
|
28
|
+
identifier: no_user
|
29
|
+
description: No users have this role
|
30
|
+
active: true
|
31
|
+
|
32
|
+
super_user:
|
33
|
+
name: Super User
|
34
|
+
identifier: super_user
|
35
|
+
description: Super user role that will always return true when checking roles for the user that has this role
|
36
|
+
users: super_user
|
37
|
+
active: true
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
2
|
+
|
3
|
+
administrator:
|
4
|
+
name: Administrator
|
5
|
+
|
6
|
+
user:
|
7
|
+
name: User
|
8
|
+
|
9
|
+
guest:
|
10
|
+
name: Guest
|
11
|
+
|
12
|
+
no_role:
|
13
|
+
name: No Roles
|
14
|
+
|
15
|
+
super_user:
|
16
|
+
name: Super User
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RoleTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
# Test that we actually have fixtures loaded
|
6
|
+
test "role fixtures loaded" do
|
7
|
+
record = Role.first
|
8
|
+
refute record == nil
|
9
|
+
end
|
10
|
+
|
11
|
+
# Relationships
|
12
|
+
test "parent relationship where no parent" do
|
13
|
+
record = Role.find_by identifier: 'administrator'
|
14
|
+
refute record.parent.present?
|
15
|
+
end
|
16
|
+
|
17
|
+
test "parent relationship where parent" do
|
18
|
+
record = Role.find_by identifier: 'user'
|
19
|
+
assert record.parent.present?
|
20
|
+
end
|
21
|
+
|
22
|
+
test "children relationship where no child" do
|
23
|
+
record = Role.find_by identifier: 'guest'
|
24
|
+
assert record.children.empty?
|
25
|
+
end
|
26
|
+
|
27
|
+
test "children relationship where child" do
|
28
|
+
record = Role.find_by identifier: 'user'
|
29
|
+
assert_equal 1, record.children.size
|
30
|
+
end
|
31
|
+
|
32
|
+
test "no users" do
|
33
|
+
record = Role.find_by identifier: 'no_user'
|
34
|
+
refute record.users.present?
|
35
|
+
end
|
36
|
+
|
37
|
+
test "users" do
|
38
|
+
record = Role.find_by identifier: 'administrator'
|
39
|
+
assert record.users.present?
|
40
|
+
end
|
41
|
+
|
42
|
+
# Validations
|
43
|
+
test "unique name" do
|
44
|
+
record = Role.new
|
45
|
+
record.name = 'Administrator'
|
46
|
+
record.identifier = 'admin'
|
47
|
+
record.description = 'Another administrator account'
|
48
|
+
refute record.save
|
49
|
+
end
|
50
|
+
|
51
|
+
test "unique identifier" do
|
52
|
+
record = Role.new
|
53
|
+
record.name = 'Admin'
|
54
|
+
record.identifier = 'administrator'
|
55
|
+
record.description = 'Another administrator account'
|
56
|
+
refute record.save
|
57
|
+
end
|
58
|
+
|
59
|
+
test "has description" do
|
60
|
+
record = Role.new
|
61
|
+
record.name = 'Admin'
|
62
|
+
record.identifier = 'admin'
|
63
|
+
refute record.save
|
64
|
+
end
|
65
|
+
|
66
|
+
test "savable" do
|
67
|
+
record = Role.new
|
68
|
+
record.name = 'New'
|
69
|
+
record.identifier = 'new'
|
70
|
+
record.description = 'A new account'
|
71
|
+
assert record.save
|
72
|
+
end
|
73
|
+
|
74
|
+
# Base methods
|
75
|
+
test "responds to all methods" do
|
76
|
+
record = Role.first
|
77
|
+
assert_respond_to record, :parent
|
78
|
+
assert_respond_to record, :children
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
@@ -0,0 +1,184 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class UserTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
# Test that we actually have fixtures loaded
|
6
|
+
test "user fixtures loaded" do
|
7
|
+
record = User.first
|
8
|
+
refute record == nil
|
9
|
+
end
|
10
|
+
|
11
|
+
# Relationships
|
12
|
+
test "no roles" do
|
13
|
+
record = User.find_by name: 'No Roles'
|
14
|
+
refute record.roles.present?
|
15
|
+
end
|
16
|
+
|
17
|
+
test "roles" do
|
18
|
+
record = User.find_by name: 'Administrator'
|
19
|
+
assert record.roles.present?
|
20
|
+
end
|
21
|
+
|
22
|
+
# Base methods
|
23
|
+
test "responds to all methods" do
|
24
|
+
record = User.first
|
25
|
+
assert_respond_to record, :roles_as
|
26
|
+
assert_respond_to record, :has_role?
|
27
|
+
assert_respond_to record, :has_roles?
|
28
|
+
assert_respond_to record, :has_at_least_one_role?
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
# Getting roles
|
33
|
+
test "get roles as" do
|
34
|
+
record = User.find_by name: 'Administrator'
|
35
|
+
role = Role.find_by identifier: 'administrator'
|
36
|
+
assert_equal [:administrator], record.roles_as(:identifiers)
|
37
|
+
assert_equal [role.id], record.roles_as(:ids)
|
38
|
+
assert_equal [role], record.roles_as(:objects)
|
39
|
+
|
40
|
+
record = User.find_by name: 'No Roles'
|
41
|
+
assert_equal [], record.roles_as(:identifiers)
|
42
|
+
assert_equal [], record.roles_as(:ids)
|
43
|
+
assert_equal [], record.roles_as(:objects)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Testing for role
|
47
|
+
test "has role?" do
|
48
|
+
record = User.find_by name: 'Administrator'
|
49
|
+
role = Role.find_by identifier: 'administrator'
|
50
|
+
assert record.has_role?(:administrator)
|
51
|
+
assert record.has_role?(role.id)
|
52
|
+
assert record.has_role?(role)
|
53
|
+
|
54
|
+
role = Role.find_by identifier: 'guest'
|
55
|
+
refute record.has_role?(:guest)
|
56
|
+
refute record.has_role?(role.id)
|
57
|
+
refute record.has_role?(role)
|
58
|
+
|
59
|
+
record = User.find_by name: 'Super User'
|
60
|
+
assert record.has_role?(:guest)
|
61
|
+
assert record.has_role?(role.id)
|
62
|
+
assert record.has_role?(role)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Testing for roles
|
66
|
+
test "has roles?" do
|
67
|
+
record = User.find_by name: 'User'
|
68
|
+
role_user = Role.find_by identifier: 'user'
|
69
|
+
role_guest = Role.find_by identifier: 'guest'
|
70
|
+
assert record.has_roles?([:user, :guest])
|
71
|
+
assert record.has_roles?([role_user.id, role_guest.id])
|
72
|
+
assert record.has_roles?([role_user, role_guest])
|
73
|
+
|
74
|
+
role_adminstrator = Role.find_by identifier: 'administrator'
|
75
|
+
refute record.has_roles?([:user, :guest, :administrator])
|
76
|
+
refute record.has_roles?([role_user.id, role_guest.id, role_adminstrator.id])
|
77
|
+
refute record.has_roles?([role_user, role_guest, role_adminstrator])
|
78
|
+
|
79
|
+
record = User.find_by name: 'Super User'
|
80
|
+
assert record.has_roles?([:user, :guest])
|
81
|
+
assert record.has_roles?([role_user.id, role_guest.id])
|
82
|
+
assert record.has_roles?([role_user, role_guest])
|
83
|
+
end
|
84
|
+
|
85
|
+
# Testing for at least one role
|
86
|
+
test "has at least one role?" do
|
87
|
+
record = User.find_by name: 'Guest'
|
88
|
+
role_user = Role.find_by identifier: 'user'
|
89
|
+
role_guest = Role.find_by identifier: 'guest'
|
90
|
+
assert record.has_at_least_one_role?([:user, :guest])
|
91
|
+
assert record.has_at_least_one_role?([role_user.id, role_guest.id])
|
92
|
+
assert record.has_at_least_one_role?([role_user, role_guest])
|
93
|
+
|
94
|
+
record = User.find_by name: 'Administrator'
|
95
|
+
refute record.has_at_least_one_role?([:user, :guest])
|
96
|
+
refute record.has_at_least_one_role?([role_user.id, role_guest.id])
|
97
|
+
refute record.has_at_least_one_role?([role_user, role_guest])
|
98
|
+
|
99
|
+
record = User.find_by name: 'Super User'
|
100
|
+
assert record.has_at_least_one_role?([:user, :guest])
|
101
|
+
assert record.has_at_least_one_role?([role_user.id, role_guest.id])
|
102
|
+
assert record.has_at_least_one_role?([role_user, role_guest])
|
103
|
+
end
|
104
|
+
|
105
|
+
# Getting roles and decendents of roles
|
106
|
+
test "get roles and descendents as" do
|
107
|
+
record = User.find_by name: 'Administrator'
|
108
|
+
role_administrator = Role.find_by identifier: 'administrator'
|
109
|
+
role_user = Role.find_by identifier: 'user'
|
110
|
+
role_guest = Role.find_by identifier: 'guest'
|
111
|
+
assert_equal [:administrator, :user, :guest], record.roles_and_descendents_as(:identifiers)
|
112
|
+
assert_equal [role_administrator.id, role_user.id, role_guest.id], record.roles_and_descendents_as(:ids)
|
113
|
+
assert_equal [role_administrator, role_user, role_guest], record.roles_and_descendents_as(:objects)
|
114
|
+
|
115
|
+
record = User.find_by name: 'No Roles'
|
116
|
+
assert_equal [], record.roles_and_descendents_as(:identifiers)
|
117
|
+
assert_equal [], record.roles_and_descendents_as(:ids)
|
118
|
+
assert_equal [], record.roles_and_descendents_as(:objects)
|
119
|
+
end
|
120
|
+
|
121
|
+
# Testing for role by descendents
|
122
|
+
test "has role by descendents?" do
|
123
|
+
record = User.find_by name: 'Administrator'
|
124
|
+
role = Role.find_by identifier: 'guest'
|
125
|
+
assert record.has_role_by_descendents?(:guest)
|
126
|
+
assert record.has_role_by_descendents?(role.id)
|
127
|
+
assert record.has_role_by_descendents?(role)
|
128
|
+
|
129
|
+
record = User.find_by name: 'User'
|
130
|
+
role = Role.find_by identifier: 'administrator'
|
131
|
+
refute record.has_role_by_descendents?(:administrator)
|
132
|
+
refute record.has_role_by_descendents?(role.id)
|
133
|
+
refute record.has_role_by_descendents?(role)
|
134
|
+
|
135
|
+
record = User.find_by name: 'Super User'
|
136
|
+
assert record.has_role_by_descendents?(:administrator)
|
137
|
+
assert record.has_role_by_descendents?(role.id)
|
138
|
+
assert record.has_role_by_descendents?(role)
|
139
|
+
end
|
140
|
+
|
141
|
+
# Testing for roles by descendents
|
142
|
+
test "has roles by descendents?" do
|
143
|
+
record = User.find_by name: 'Administrator'
|
144
|
+
role_user = Role.find_by identifier: 'user'
|
145
|
+
role_guest = Role.find_by identifier: 'guest'
|
146
|
+
assert record.has_roles_by_descendents?([:user, :guest])
|
147
|
+
assert record.has_roles_by_descendents?([role_user.id, role_guest.id])
|
148
|
+
assert record.has_roles_by_descendents?([role_user, role_guest])
|
149
|
+
|
150
|
+
record = User.find_by name: 'User'
|
151
|
+
role_administrator = Role.find_by identifier: 'administrator'
|
152
|
+
role_guest = Role.find_by identifier: 'guest'
|
153
|
+
refute record.has_roles_by_descendents?([:administrator, :guest])
|
154
|
+
refute record.has_roles_by_descendents?([role_administrator.id, role_guest.id])
|
155
|
+
refute record.has_roles_by_descendents?([role_administrator, role_guest])
|
156
|
+
|
157
|
+
record = User.find_by name: 'Super User'
|
158
|
+
assert record.has_roles_by_descendents?([:user, :guest])
|
159
|
+
assert record.has_roles_by_descendents?([role_user.id, role_guest.id])
|
160
|
+
assert record.has_roles_by_descendents?([role_user, role_guest])
|
161
|
+
end
|
162
|
+
|
163
|
+
# Testing has at least one role by descendents
|
164
|
+
test "has at least one role by descendents?" do
|
165
|
+
record = User.find_by name: 'User'
|
166
|
+
role_administrator = Role.find_by identifier: 'administrator'
|
167
|
+
role_guest = Role.find_by identifier: 'guest'
|
168
|
+
assert record.has_at_least_one_role_by_descendents?([:administrator, :guest])
|
169
|
+
assert record.has_at_least_one_role_by_descendents?([role_administrator.id, role_guest.id])
|
170
|
+
assert record.has_at_least_one_role_by_descendents?([role_administrator, role_guest])
|
171
|
+
|
172
|
+
record = User.find_by name: 'Guest'
|
173
|
+
role_administrator = Role.find_by identifier: 'administrator'
|
174
|
+
role_user = Role.find_by identifier: 'user'
|
175
|
+
refute record.has_at_least_one_role_by_descendents?([:administrator, :user])
|
176
|
+
refute record.has_at_least_one_role_by_descendents?([role_administrator.id, role_user.id])
|
177
|
+
refute record.has_at_least_one_role_by_descendents?([role_administrator, role_user])
|
178
|
+
|
179
|
+
record = User.find_by name: 'Super User'
|
180
|
+
assert record.has_at_least_one_role_by_descendents?([:administrator, :guest])
|
181
|
+
assert record.has_at_least_one_role_by_descendents?([role_administrator.id, role_guest.id])
|
182
|
+
assert record.has_at_least_one_role_by_descendents?([role_administrator, role_guest])
|
183
|
+
end
|
184
|
+
end
|