class ActionController::TestRequest

:nodoc:

def assign_parameters(routes, controller_path, action, parameters = {})

def assign_parameters(routes, controller_path, action, parameters = {})
  parameters = parameters.symbolize_keys.merge(:controller => controller_path, :action => action)
  extra_keys = routes.extra_keys(parameters)
  non_path_parameters = get? ? query_parameters : request_parameters
  parameters.each do |key, value|
    if value.is_a?(Array) && (value.frozen? || value.any?(&:frozen?))
      value = value.map{ |v| v.duplicable? ? v.dup : v }
    elsif value.is_a?(Hash) && (value.frozen? || value.any?{ |k,v| v.frozen? })
      value = Hash[value.map{ |k,v| [k, v.duplicable? ? v.dup : v] }]
    elsif value.frozen? && value.duplicable?
      value = value.dup
    end
    if extra_keys.include?(key.to_sym)
      non_path_parameters[key] = value
    else
      if value.is_a?(Array)
        value = value.map(&:to_param)
      else
        value = value.to_param
      end
      path_parameters[key.to_s] = value
    end
  end
  # Clear the combined params hash in case it was already referenced.
  @env.delete("action_dispatch.request.parameters")
  # Clear the filter cache variables so they're not stale
  @filtered_parameters = @filtered_env = @filtered_path = nil
  params = self.request_parameters.dup
  %w(controller action only_path).each do |k|
    params.delete(k)
    params.delete(k.to_sym)
  end
  data = params.to_query
  @env['CONTENT_LENGTH'] = data.length.to_s
  @env['rack.input'] = StringIO.new(data)
end

def default_env

def default_env
  DEFAULT_ENV
end

def initialize(env = {})

def initialize(env = {})
  super
  self.session = TestSession.new
  self.session_options = TestSession::DEFAULT_OPTIONS.merge(:id => SecureRandom.hex(16))
end

def recycle!

def recycle!
  @formats = nil
  @env.delete_if { |k, v| k =~ /^(action_dispatch|rack)\.request/ }
  @env.delete_if { |k, v| k =~ /^action_dispatch\.rescue/ }
  @symbolized_path_params = nil
  @method = @request_method = nil
  @fullpath = @ip = @remote_ip = @protocol = nil
  @env['action_dispatch.request.query_parameters'] = {}
  @set_cookies ||= {}
  @set_cookies.update(Hash[cookie_jar.instance_variable_get("@set_cookies").map{ |k,o| [k,o[:value]] }])
  deleted_cookies = cookie_jar.instance_variable_get("@delete_cookies")
  @set_cookies.reject!{ |k,v| deleted_cookies.include?(k) }
  cookie_jar.update(rack_cookies)
  cookie_jar.update(cookies)
  cookie_jar.update(@set_cookies)
  cookie_jar.recycle!
end