diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index b95b003c2d0d4ee6d1389aaca1620b0642587a78..225d0c031925713b5e5a39d9eb2d171b72f31d36 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Enhance documentation for setting headers in integration tests. Skip auto HTTP prepending when its already there. Closes #4079. [Rick Olson] + * Documentation for AbstractRequest. Closes #4895. [kevin.clark@gmail.com] * Refactor various InstanceTag instance method to class methods. Closes #4800. [skaes@web.de] diff --git a/actionpack/lib/action_controller/integration.rb b/actionpack/lib/action_controller/integration.rb index 33ec1a01071dc5848c7987f4e4c3dd55aa17a39f..c96dd9c5130510afa051bc20ccafe783288f61b0 100644 --- a/actionpack/lib/action_controller/integration.rb +++ b/actionpack/lib/action_controller/integration.rb @@ -140,14 +140,18 @@ def redirect? # Performs a GET request with the given parameters. The parameters may # be +nil+, a Hash, or a string that is appropriately encoded - # (application/x-www-form-urlencoded or multipart/form-data). + # (application/x-www-form-urlencoded or multipart/form-data). The headers + # should be a hash. The keys will automatically be upcased, with the + # prefix 'HTTP_' added if needed. def get(path, parameters=nil, headers=nil) process :get, path, parameters, headers end # Performs a POST request with the given parameters. The parameters may # be +nil+, a Hash, or a string that is appropriately encoded - # (application/x-www-form-urlencoded or multipart/form-data). + # (application/x-www-form-urlencoded or multipart/form-data). The headers + # should be a hash. The keys will automatically be upcased, with the + # prefix 'HTTP_' added if needed. def post(path, parameters=nil, headers=nil) process :post, path, parameters, headers end @@ -155,7 +159,9 @@ def post(path, parameters=nil, headers=nil) # Performs an XMLHttpRequest request with the given parameters, mimicing # the request environment created by the Prototype library. The parameters # may be +nil+, a Hash, or a string that is appropriately encoded - # (application/x-www-form-urlencoded or multipart/form-data). + # (application/x-www-form-urlencoded or multipart/form-data). The headers + # should be a hash. The keys will automatically be upcased, with the + # prefix 'HTTP_' added if needed. def xml_http_request(path, parameters=nil, headers=nil) headers = (headers || {}).merge("X-Requested-With" => "XMLHttpRequest") post(path, parameters, headers) @@ -218,7 +224,7 @@ def process(method, path, parameters=nil, headers=nil) (headers || {}).each do |key, value| key = key.to_s.upcase.gsub(/-/, "_") - key = "HTTP_#{key}" unless env.has_key?(key) + key = "HTTP_#{key}" unless env.has_key?(key) || env =~ /^X|HTTP/ env[key] = value end