profile_roles_controller_test.rb
4.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
require_relative "../test_helper"
require 'profile_roles_controller'
class ProfileRolesControllerTest < ActionController::TestCase
def setup
@controller = ProfileRolesController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
@role = Role.find(:first)
end
should 'create a custom role' do
community = fast_create(Community)
admin = create_user_with_permission('admin_user', 'manage_custom_roles', community)
login_as :admin_user
post :create, :profile => community.identifier, :role => {:name => "some_role", :permissions => ["edit_profile"] }
role = Role.where(:name => 'some_role').first
assert_not_nil role
assert_equal community.id, role.profile_id
end
should 'not create a custom role without permission' do
community = fast_create(Community)
moderator = create_user_with_permission('profile_admin', 'edit_profile', community)
login_as :profile_admin
post :create, :profile => community.identifier, :role => {:name => "new_admin", :permissions => ["edit_profile"] }
assert_response 403
assert_template 'access_denied'
role = Role.where(:name => 'new_admin')
assert_empty role
end
should 'delete a custom role not used' do
community = fast_create(Community)
admin = create_user_with_permission('admin_user', 'manage_custom_roles', community)
login_as :admin_user
role = Role.create!({:name => 'delete_article', :key => 'profile_delete_article', :profile_id => community.id, :environment => Environment.default}, :without_protection => true)
post :remove , :profile => community.identifier, :id => role.id
assert_response :redirect
assert_redirected_to :action => 'index'
assert_not_includes Role.all, role
end
should 'delete a custom role being used' do
community = fast_create(Community)
admin = create_user_with_permission('admin_user', 'manage_custom_roles', community)
login_as :admin_user
role = Role.create!({:name => 'delete_article', :key => 'profile_delete_article', :profile_id => community.id, :environment => Environment.default}, :without_protection => true)
admin.add_role(role, community)
moderator_role = Role.find_by_name("moderator")
assert_not_includes community.members_by_role(moderator_role), admin
post :remove , :profile => community.identifier, :id => role.id, :roles => [moderator_role.id]
assert_response :redirect
assert_redirected_to :action => 'index'
assert_not_includes Role.all, role
assert_includes community.members_by_role(moderator_role), admin
end
should 'assign a custom role to single user' do
community = fast_create(Community)
admin = create_user_with_permission('admin_user', 'manage_custom_roles', community)
login_as :admin_user
role = Role.create!({:name => 'delete_article', :key => 'profile_delete_article', :profile_id => community.id, :environment => Environment.default}, :without_protection => true)
assert_not_includes community.members_by_role(role), admin
post :define, :profile => community.identifier, :id => role.id, :assign_role_by => "members", :person_id => admin.id
assert_includes community.members_by_role(role), admin
end
should 'replace a role with a custom role' do
community = fast_create(Community)
admin = create_user_with_permission('admin_user', 'manage_custom_roles', community)
moderator = create_user_with_permission('profile_admin', 'edit_profile', community)
login_as :admin_user
role = Role.create!({:name => 'delete_article', :key => 'profile_delete_article', :profile_id => community.id, :environment => Environment.default}, :without_protection => true)
moderator_role = Role.find_by_name("moderator")
admin.add_role(moderator_role, community)
assert_not_includes community.members_by_role(role), admin
assert_not_includes community.members_by_role(role), moderator
assert_not_includes community.members_by_role(moderator_role), moderator
post :define, :profile => community.identifier, :id => role.id, :assign_role_by => "roles", :selected_role => moderator_role.id
assert_not_includes community.members_by_role(moderator_role), admin
assert_includes community.members_by_role(role), admin
assert_not_includes community.members_by_role(role), moderator
assert_not_includes community.members_by_role(moderator_role), moderator
end
end