@@ -151,6 +151,16 @@ def authenticate_with_request
151
151
assert_equal 'Definitely Maybe' , @response . body
152
152
end
153
153
154
+ test "authentication request with _method" do
155
+ @request . env [ 'HTTP_AUTHORIZATION' ] = encode_credentials ( :username => 'pretty' , :password => 'please' , :method => :post )
156
+ @request . env [ 'rack.methodoverride.original_method' ] = 'POST'
157
+ put :display
158
+
159
+ assert_response :success
160
+ assert assigns ( :logged_in )
161
+ assert_equal 'Definitely Maybe' , @response . body
162
+ end
163
+
154
164
private
155
165
156
166
def encode_credentials ( options )
@@ -161,15 +171,22 @@ def encode_credentials(options)
161
171
# to prevent tampering of timestamp
162
172
ActionController ::Base . session_options [ :secret ] = "session_options_secret"
163
173
164
- # Perform unauthenticated GET to retrieve digest parameters to use on subsequent request
165
- get :index
174
+ # Perform unauthenticated request to retrieve digest parameters to use on subsequent request
175
+ method = options . delete ( :method ) || 'GET'
176
+
177
+ case method . to_s . upcase
178
+ when 'GET'
179
+ get :index
180
+ when 'POST'
181
+ post :index
182
+ end
166
183
167
184
assert_response :unauthorized
168
185
169
186
credentials = decode_credentials ( @response . headers [ 'WWW-Authenticate' ] )
170
187
credentials . merge! ( options )
171
188
credentials . reverse_merge! ( :uri => "#{ @request . env [ 'REQUEST_URI' ] } " )
172
- ActionController ::HttpAuthentication ::Digest . encode_credentials ( "GET" , credentials , password , options [ :password_is_ha1 ] )
189
+ ActionController ::HttpAuthentication ::Digest . encode_credentials ( method , credentials , password , options [ :password_is_ha1 ] )
173
190
end
174
191
175
192
def decode_credentials ( header )
0 commit comments