25 lines
661 B
Ruby
25 lines
661 B
Ruby
require 'prism'
|
|
require 'stringio'
|
|
|
|
module TestSupport
|
|
def env_for(method, path, headers: {}, body: nil, cookies: nil)
|
|
path_part, query = path.split('?', 2)
|
|
env = {
|
|
'REQUEST_METHOD' => method.to_s.upcase,
|
|
'PATH_INFO' => path_part,
|
|
'QUERY_STRING' => query.to_s,
|
|
'rack.input' => StringIO.new(body || ''),
|
|
'CONTENT_LENGTH' => (body ? body.bytesize.to_s : '0')
|
|
}
|
|
headers.each do |name, value|
|
|
if name.downcase == 'content-type'
|
|
env['CONTENT_TYPE'] = value
|
|
else
|
|
env["HTTP_#{name.upcase.tr('-', '_')}"] = value
|
|
end
|
|
end
|
|
env['HTTP_COOKIE'] = cookies if cookies
|
|
env
|
|
end
|
|
end
|