Make RackRequest#request_method respect _method

This commit is contained in:
Pratik Naik
2008-07-16 05:01:29 +01:00
parent fea5b6fd41
commit 1d002f6bcb
3 changed files with 66 additions and 4 deletions

View File

@@ -98,10 +98,6 @@ module ActionController #:nodoc:
@env['REMOTE_ADDR']
end
def request_method
@env['REQUEST_METHOD'].downcase.to_sym
end
def server_port
@env['SERVER_PORT'].to_i
end

View File

@@ -53,6 +53,14 @@ class BaseCgiTest < Test::Unit::TestCase
end
def default_test; end
private
def set_content_data(data)
@request.env['CONTENT_LENGTH'] = data.length
@request.env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded; charset=utf-8'
@request.env['RAW_POST_DATA'] = data
end
end
class CgiRequestTest < BaseCgiTest
@@ -180,6 +188,31 @@ class CgiRequestContentTypeTest < BaseCgiTest
end
end
class CgiRequestMethodTest < BaseCgiTest
def test_get
assert_equal :get, @request.request_method
end
def test_post
@request.env['REQUEST_METHOD'] = 'POST'
assert_equal :post, @request.request_method
end
def test_put
@request.env['REQUEST_METHOD'] = 'POST'
set_content_data '_method=put'
assert_equal :put, @request.request_method
end
def test_delete
@request.env['REQUEST_METHOD'] = 'POST'
set_content_data '_method=delete'
assert_equal :delete, @request.request_method
end
end
class CgiRequestNeedsRewoundTest < BaseCgiTest
def test_body_should_be_rewound
data = 'foo'

View File

@@ -51,6 +51,14 @@ class BaseRackTest < Test::Unit::TestCase
end
def default_test; end
private
def set_content_data(data)
@request.env['CONTENT_LENGTH'] = data.length
@request.env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded; charset=utf-8'
@request.env['RAW_POST_DATA'] = data
end
end
class RackRequestTest < BaseRackTest
@@ -178,6 +186,31 @@ class RackRequestContentTypeTest < BaseRackTest
end
end
class RackRequestMethodTest < BaseRackTest
def test_get
assert_equal :get, @request.request_method
end
def test_post
@request.env['REQUEST_METHOD'] = 'POST'
assert_equal :post, @request.request_method
end
def test_put
@request.env['REQUEST_METHOD'] = 'POST'
set_content_data '_method=put'
assert_equal :put, @request.request_method
end
def test_delete
@request.env['REQUEST_METHOD'] = 'POST'
set_content_data '_method=delete'
assert_equal :delete, @request.request_method
end
end
class RackRequestNeedsRewoundTest < BaseRackTest
def test_body_should_be_rewound
data = 'foo'