module Rack::Test::Utils

def normalize_multipart_params(params, first=false)

Return a flattened hash of parameter values based on the given params.
def normalize_multipart_params(params, first=false)
  flattened_params = {}
  params.each do |key, value|
    k = first ? key.to_s : "[#{key}]"
    case value
    when Array
      value.map do |v|
        if v.is_a?(Hash)
          nested_params = {}
          normalize_multipart_params(v).each do |subkey, subvalue|
            nested_params[subkey] = subvalue
          end
          (flattened_params["#{k}[]"] ||= []) << nested_params
        else
          flattened_params["#{k}[]"] = value
        end
      end
    when Hash
      normalize_multipart_params(value).each do |subkey, subvalue|
        flattened_params[k + subkey] = subvalue
      end
    else
      flattened_params[k] = value
    end
  end
  flattened_params
end