users_controller_test.rb
4.6 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
require_relative "../test_helper"
require 'users_controller'
# Re-raise errors caught by the controller.
class UsersController; def rescue_action(e) raise e end; end
class UsersControllerTest < ActionController::TestCase
def setup
@controller = UsersController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
Environment.destroy_all
@environment = fast_create(Environment, :is_default => true)
admin_user = create_user_with_permission('adminuser', 'manage_environment_users', environment)
login_as('adminuser')
end
attr_accessor :environment
should 'not access without right permission' do
create_user('guest')
login_as 'guest'
get :index
assert_response 403 # forbidden
end
should 'grant access with right permission' do
get :index
assert_response :success
end
should 'blank search results include activated and deactivated users' do
deactivated = create_user('deactivated')
deactivated.activated_at = nil
deactivated.person.visible = false
deactivated.save!
get :index, :q => ''
assert_tag :tag => 'div', :attributes => { :id => /users-list/ }, :descendant => {:tag => 'a', :attributes => {:title => /adminuser/}}
assert_tag :tag => 'div', :attributes => { :id => /users-list/ }, :descendant => {:tag => 'a', :attributes => {:title => /deactivated/}}
end
should 'blank search include all users' do
(1..5).each {|i|
u = create_user('user'+i.to_s)
}
get :index, :q => '' # blank search
assert_tag :tag => 'div', :attributes => { :id => /users-list/ }, :descendant => {:tag => 'a', :attributes => {:title => /adminuser/}}
(1..5).each {|i|
u = 'user'+i.to_s
assert_tag :tag => 'div', :attributes => { :id => /users-list/ }, :descendant => {:tag => 'a', :attributes => {:title => u}}
}
end
should 'search not include all users' do
(1..5).each {|i|
u = create_user('user'+i.to_s)
}
get :index, :q => 'er5' # search
assert_tag :tag => 'div', :attributes => { :id => /users-list/ }, :descendant => {:tag => 'a', :attributes => {:title => /user5/}}
(1..4).each {|i|
u = 'user'+i.to_s
assert_no_tag :tag => 'div', :attributes => { :id => /users-list/ }, :descendant => {:tag => 'a', :attributes => {:title => u}}
}
end
should 'set admin role' do
person = create_user.person
Role.create!(:name => 'Admin', :key => 'environment_administrator', :environment => environment, :permissions => ['view_environment_admin_panel'])
assert_equal false, person.is_admin?
post :set_admin_role, :id => person.id, :q => ''
person.reload
assert person.is_admin?
end
should 'reset admin role' do
person = create_user.person
Role.create!(:name => 'Admin', :key => 'environment_administrator', :environment => environment, :permissions => ['view_environment_admin_panel'])
environment.add_admin(person)
assert person.is_admin?
post :reset_admin_role, :id => person.id, :q => ''
person.reload
assert !person.is_admin?
end
should 'activate user' do
u = create_user()
assert_equal false, u.activated?
post :activate, :id => u.person.id, :q => ''
u.reload
assert u.activated?
end
should 'deactivate user' do
u = create_user()
u.activated_at = Time.now.utc
u.activation_code = nil
u.person.visible = true
assert u.activated?
post :deactivate, :id => u.person.id, :q => ''
u.reload
assert_equal false, u.activated?
end
should 'order users by name' do
create_user('jeremy')
create_user('bill')
create_user('ana')
create_user('creed')
get :index
assert_order ['ana', 'bill', 'creed', 'jeremy'], assigns(:collection).map(&:name)
end
should 'set filter to all_users by default' do
get :index
assert_equal 'all_users', assigns(:filter)
end
should 'response as XML to export users' do
get :download, :format => 'xml'
assert_equal 'text/xml', @response.content_type
end
should 'response as CSV to export users' do
get :download, :format => 'csv'
assert_equal 'text/csv', @response.content_type
assert_equal 'name;email', @response.body.split("\n")[0]
end
should 'be able to remove a person' do
person = fast_create(Person, :environment_id => environment.id)
assert_difference 'Person.count', -1 do
post :destroy_user, :id => person.id
end
end
should 'not crash if user does not exist' do
person = fast_create(Person)
assert_no_difference 'Person.count' do
post :destroy_user, :id => 99999
end
assert_redirected_to :action => 'index'
end
end