diff options
author | Andrew White <andyw@pixeltrix.co.uk> | 2013-03-15 02:16:52 -0700 |
---|---|---|
committer | Andrew White <andyw@pixeltrix.co.uk> | 2013-03-15 02:16:52 -0700 |
commit | ddb9040b433b00aa0206442aa718eee12bceb517 (patch) | |
tree | c87f2a7a1643772a81161b2d4ea53474df07130d /actionpack/lib | |
parent | c1003d99b00b3afb5417b6853a3e2ba92638cbe8 (diff) | |
parent | e8598a53a17da5fa909e6e5ec1d8284fca6a85f9 (diff) | |
download | rails-ddb9040b433b00aa0206442aa718eee12bceb517.tar.gz rails-ddb9040b433b00aa0206442aa718eee12bceb517.tar.bz2 rails-ddb9040b433b00aa0206442aa718eee12bceb517.zip |
Merge pull request #9716 from senny/rework_headers_functional_tests
Rework headers functional tests
Diffstat (limited to 'actionpack/lib')
-rw-r--r-- | actionpack/lib/action_controller/test_case.rb | 34 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/http/headers.rb | 3 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/testing/integration.rb | 5 |
3 files changed, 31 insertions, 11 deletions
diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb index 9dae78d25d..b2ceedaa6c 100644 --- a/actionpack/lib/action_controller/test_case.rb +++ b/actionpack/lib/action_controller/test_case.rb @@ -451,37 +451,57 @@ module ActionController end - # Executes a request simulating GET HTTP method and set/volley the response + # Simulate a GET request with the given parameters. + # + # - +action+: The controller action to call + # - +parameters+: The HTTP parameters that you want to pass. This may + # be +nil+, + # a Hash, or a String that is appropriately encoded + # (<tt>application/x-www-form-urlencoded</tt> or + # <tt>multipart/form-data</tt>). + # - +session+: A Hash of parameters to store in the session. This my be +nil+. + # - +flash+: A Hash of parameters to store in the flash. This my be +nil+. + # + # You can also simulate POST, PATCH, PUT, DELETE, and HEAD requests with + # +#post+, +#patch+, +#put+, +#delete+, and +#head+. + # Note that the request method is not verified. The different methods are + # available to make the tests more expressive. def get(action, *args) process(action, "GET", *args) end - # Executes a request simulating POST HTTP method and set/volley the response + # Simulate a POST request with the given parameters and set/volley the response. + # See +#get+ for more details. def post(action, *args) process(action, "POST", *args) end - # Executes a request simulating PATCH HTTP method and set/volley the response + # Simulate a PATCH request with the given parameters and set/volley the response. + # See +#get+ for more details. def patch(action, *args) process(action, "PATCH", *args) end - # Executes a request simulating PUT HTTP method and set/volley the response + # Simulate a PUT request with the given parameters and set/volley the response. + # See +#get+ for more details. def put(action, *args) process(action, "PUT", *args) end - # Executes a request simulating DELETE HTTP method and set/volley the response + # Simulate a DELETE request with the given parameters and set/volley the response. + # See +#get+ for more details. def delete(action, *args) process(action, "DELETE", *args) end - # Executes a request simulating HEAD HTTP method and set/volley the response + # Simulate a HEAD request with the given parameters and set/volley the response. + # See +#get+ for more details. def head(action, *args) process(action, "HEAD", *args) end - # Executes a request simulating OPTIONS HTTP method and set/volley the response + # Simulate a OPTIONS request with the given parameters and set/volley the response. + # See +#get+ for more details. def options(action, *args) process(action, "OPTIONS", *args) end diff --git a/actionpack/lib/action_dispatch/http/headers.rb b/actionpack/lib/action_dispatch/http/headers.rb index 1574518a16..2666cd4b0a 100644 --- a/actionpack/lib/action_dispatch/http/headers.rb +++ b/actionpack/lib/action_dispatch/http/headers.rb @@ -15,8 +15,7 @@ module ActionDispatch attr_reader :env def initialize(env = {}) - @env = {} - merge!(env) + @env = env end def [](key) diff --git a/actionpack/lib/action_dispatch/testing/integration.rb b/actionpack/lib/action_dispatch/testing/integration.rb index ae1b0b5dea..56c31255f3 100644 --- a/actionpack/lib/action_dispatch/testing/integration.rb +++ b/actionpack/lib/action_dispatch/testing/integration.rb @@ -269,7 +269,6 @@ module ActionDispatch # Performs the actual request. def process(method, path, parameters = nil, headers_or_env = nil) - rack_env = Http::Headers.new(headers_or_env || {}).env if path =~ %r{://} location = URI.parse(path) https! URI::HTTPS === location if location.scheme @@ -300,10 +299,12 @@ module ActionDispatch "CONTENT_TYPE" => "application/x-www-form-urlencoded", "HTTP_ACCEPT" => accept } + # this modifies the passed env directly + Http::Headers.new(env).merge!(headers_or_env || {}) session = Rack::Test::Session.new(_mock_session) - env.merge!(rack_env) + env.merge!(env) # NOTE: rack-test v0.5 doesn't build a default uri correctly # Make sure requested path is always a full uri |