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