diff options
Diffstat (limited to 'actionpack/lib/action_dispatch/testing')
| -rw-r--r-- | actionpack/lib/action_dispatch/testing/integration.rb | 27 | 
1 files changed, 17 insertions, 10 deletions
diff --git a/actionpack/lib/action_dispatch/testing/integration.rb b/actionpack/lib/action_dispatch/testing/integration.rb index 8777666f9f..5627e79bb7 100644 --- a/actionpack/lib/action_dispatch/testing/integration.rb +++ b/actionpack/lib/action_dispatch/testing/integration.rb @@ -327,17 +327,17 @@ module ActionDispatch            request_encoder = RequestEncoder.encoder(as)            if path =~ %r{://} -            location = URI.parse(path) -            https! URI::HTTPS === location if location.scheme -            if url_host = location.host -              default = Rack::Request::DEFAULT_PORTS[location.scheme] -              url_host += ":#{location.port}" if default != location.port -              host! url_host +            path = build_expanded_path(path, request_encoder) do |location| +              https! URI::HTTPS === location if location.scheme + +              if url_host = location.host +                default = Rack::Request::DEFAULT_PORTS[location.scheme] +                url_host += ":#{location.port}" if default != location.port +                host! url_host +              end              end -            path = request_encoder.append_format_to location.path -            path = location.query ? "#{path}?#{location.query}" : path -          else -            path = request_encoder.append_format_to path +          elsif as +            path = build_expanded_path(path, request_encoder)            end            hostname, port = host.split(':') @@ -396,6 +396,13 @@ module ActionDispatch            "#{env['rack.url_scheme']}://#{env['SERVER_NAME']}:#{env['SERVER_PORT']}#{path}"          end +        def build_expanded_path(path, request_encoder) +          location = URI.parse(path) +          yield location if block_given? +          path = request_encoder.append_format_to location.path +          location.query ? "#{path}?#{location.query}" : path +        end +          class RequestEncoder # :nodoc:            @encoders = {}  | 
