##// END OF EJS Templates
Fixed that reported test duration can be wrong....
Jean-Philippe Lang -
r15730:e8cffd614e4a
parent child
Show More
@@ -1,191 +1,195
1 1 require File.expand_path('../../test_helper', __FILE__)
2 2
3 3 class SudoModeTest < Redmine::IntegrationTest
4 4 fixtures :projects, :members, :member_roles, :roles, :users, :email_addresses
5 5
6 6 def setup
7 7 Redmine::SudoMode.stubs(:enabled?).returns(true)
8 8 end
9 9
10 def teardown
11 travel_back
12 end
13
10 14 def test_sudo_mode_should_be_active_after_login
11 15 log_user("admin", "admin")
12 16 get "/users/new"
13 17 assert_response :success
14 18 post "/users",
15 19 :user => { :login => "psmith", :firstname => "Paul",
16 20 :lastname => "Smith", :mail => "psmith@somenet.foo",
17 21 :language => "en", :password => "psmith09",
18 22 :password_confirmation => "psmith09" }
19 23 assert_response 302
20 24
21 25 user = User.find_by_login("psmith")
22 26 assert_kind_of User, user
23 27 end
24 28
25 29 def test_add_user
26 30 log_user("admin", "admin")
27 31 expire_sudo_mode!
28 32 get "/users/new"
29 33 assert_response :success
30 34 post "/users",
31 35 :user => { :login => "psmith", :firstname => "Paul",
32 36 :lastname => "Smith", :mail => "psmith@somenet.foo",
33 37 :language => "en", :password => "psmith09",
34 38 :password_confirmation => "psmith09" }
35 39 assert_response :success
36 40 assert_nil User.find_by_login("psmith")
37 41
38 42 assert_select 'input[name=?][value=?]', 'user[login]', 'psmith'
39 43 assert_select 'input[name=?][value=?]', 'user[firstname]', 'Paul'
40 44
41 45 post "/users",
42 46 :user => { :login => "psmith", :firstname => "Paul",
43 47 :lastname => "Smith", :mail => "psmith@somenet.foo",
44 48 :language => "en", :password => "psmith09",
45 49 :password_confirmation => "psmith09" },
46 50 :sudo_password => 'admin'
47 51 assert_response 302
48 52
49 53 user = User.find_by_login("psmith")
50 54 assert_kind_of User, user
51 55 end
52 56
53 57 def test_create_member_xhr
54 58 log_user 'admin', 'admin'
55 59 expire_sudo_mode!
56 60 get '/projects/ecookbook/settings/members'
57 61 assert_response :success
58 62
59 63 assert_no_difference 'Member.count' do
60 64 xhr :post, '/projects/ecookbook/memberships', membership: {role_ids: [1], user_id: 7}
61 65 end
62 66
63 67 assert_no_difference 'Member.count' do
64 68 xhr :post, '/projects/ecookbook/memberships', membership: {role_ids: [1], user_id: 7}, sudo_password: ''
65 69 end
66 70
67 71 assert_no_difference 'Member.count' do
68 72 xhr :post, '/projects/ecookbook/memberships', membership: {role_ids: [1], user_id: 7}, sudo_password: 'wrong'
69 73 end
70 74
71 75 assert_difference 'Member.count' do
72 76 xhr :post, '/projects/ecookbook/memberships', membership: {role_ids: [1], user_id: 7}, sudo_password: 'admin'
73 77 end
74 78 assert User.find(7).member_of?(Project.find(1))
75 79 end
76 80
77 81 def test_create_member
78 82 log_user 'admin', 'admin'
79 83 expire_sudo_mode!
80 84 get '/projects/ecookbook/settings/members'
81 85 assert_response :success
82 86
83 87 assert_no_difference 'Member.count' do
84 88 post '/projects/ecookbook/memberships', membership: {role_ids: [1], user_id: 7}
85 89 end
86 90
87 91 assert_no_difference 'Member.count' do
88 92 post '/projects/ecookbook/memberships', membership: {role_ids: [1], user_id: 7}, sudo_password: ''
89 93 end
90 94
91 95 assert_no_difference 'Member.count' do
92 96 post '/projects/ecookbook/memberships', membership: {role_ids: [1], user_id: 7}, sudo_password: 'wrong'
93 97 end
94 98
95 99 assert_difference 'Member.count' do
96 100 post '/projects/ecookbook/memberships', membership: {role_ids: [1], user_id: 7}, sudo_password: 'admin'
97 101 end
98 102
99 103 assert_redirected_to '/projects/ecookbook/settings/members'
100 104 assert User.find(7).member_of?(Project.find(1))
101 105 end
102 106
103 107 def test_create_role
104 108 log_user 'admin', 'admin'
105 109 expire_sudo_mode!
106 110 get '/roles'
107 111 assert_response :success
108 112
109 113 get '/roles/new'
110 114 assert_response :success
111 115
112 116 post '/roles', role: { }
113 117 assert_response :success
114 118 assert_select 'h2', 'Confirm your password to continue'
115 119 assert_select 'form[action="/roles"]'
116 120 assert_select '#flash_error', 0
117 121
118 122 post '/roles', role: { name: 'new role', issues_visibility: 'all' }
119 123 assert_response :success
120 124 assert_select 'h2', 'Confirm your password to continue'
121 125 assert_select 'form[action="/roles"]'
122 126 assert_select 'input[type=hidden][name=?][value=?]', 'role[name]', 'new role'
123 127 assert_select '#flash_error', 0
124 128
125 129 post '/roles', role: { name: 'new role', issues_visibility: 'all' }, sudo_password: 'wrong'
126 130 assert_response :success
127 131 assert_select 'h2', 'Confirm your password to continue'
128 132 assert_select 'form[action="/roles"]'
129 133 assert_select 'input[type=hidden][name=?][value=?]', 'role[name]', 'new role'
130 134 assert_select '#flash_error'
131 135
132 136 assert_difference 'Role.count' do
133 137 post '/roles', role: { name: 'new role', issues_visibility: 'all', assignable: '1', permissions: %w(view_calendar) }, sudo_password: 'admin'
134 138 end
135 139 assert_redirected_to '/roles'
136 140 end
137 141
138 142 def test_update_email_address
139 143 log_user 'jsmith', 'jsmith'
140 144 expire_sudo_mode!
141 145 get '/my/account'
142 146 assert_response :success
143 147 post '/my/account', user: { mail: 'newmail@test.com' }
144 148 assert_response :success
145 149 assert_select 'h2', 'Confirm your password to continue'
146 150 assert_select 'form[action="/my/account"]'
147 151 assert_select 'input[type=hidden][name=?][value=?]', 'user[mail]', 'newmail@test.com'
148 152 assert_select '#flash_error', 0
149 153
150 154 # wrong password
151 155 post '/my/account', user: { mail: 'newmail@test.com' }, sudo_password: 'wrong'
152 156 assert_response :success
153 157 assert_select 'h2', 'Confirm your password to continue'
154 158 assert_select 'form[action="/my/account"]'
155 159 assert_select 'input[type=hidden][name=?][value=?]', 'user[mail]', 'newmail@test.com'
156 160 assert_select '#flash_error'
157 161
158 162 # correct password
159 163 post '/my/account', user: { mail: 'newmail@test.com' }, sudo_password: 'jsmith'
160 164 assert_redirected_to '/my/account'
161 165 assert_equal 'newmail@test.com', User.find_by_login('jsmith').mail
162 166
163 167 # sudo mode should now be active and not require password again
164 168 post '/my/account', user: { mail: 'even.newer.mail@test.com' }
165 169 assert_redirected_to '/my/account'
166 170 assert_equal 'even.newer.mail@test.com', User.find_by_login('jsmith').mail
167 171 end
168 172
169 173 def test_sudo_mode_should_skip_api_requests
170 174 with_settings :rest_api_enabled => '1' do
171 175 assert_difference('User.count') do
172 176 post '/users.json', {
173 177 :user => {
174 178 :login => 'foo', :firstname => 'Firstname', :lastname => 'Lastname',
175 179 :mail => 'foo@example.net', :password => 'secret123',
176 180 :mail_notification => 'only_assigned'}
177 181 },
178 182 credentials('admin')
179 183
180 184 assert_response :created
181 185 end
182 186 end
183 187 end
184 188
185 189 private
186 190
187 191 # sudo mode is active after sign, let it expire by advancing the time
188 192 def expire_sudo_mode!
189 193 travel_to 20.minutes.from_now
190 194 end
191 195 end
General Comments 0
You need to be logged in to leave comments. Login now