提交 0e4748cd 编写于 作者: S Santiago Pastorino

Make process reuse the env var passed as argument

上级 0c5aded0
......@@ -243,7 +243,8 @@ def _mock_session
end
# Performs the actual request.
def process(method, path, parameters = nil, rack_environment = nil)
def process(method, path, parameters = nil, env = nil)
env ||= {}
if path =~ %r{://}
location = URI.parse(path)
https! URI::HTTPS === location if location.scheme
......@@ -259,7 +260,7 @@ def process(method, path, parameters = nil, rack_environment = nil)
hostname, port = host.split(':')
env = {
default_env = {
:method => method,
:params => parameters,
......@@ -277,9 +278,7 @@ def process(method, path, parameters = nil, rack_environment = nil)
session = Rack::Test::Session.new(_mock_session)
(rack_environment || {}).each do |key, value|
env[key] = value
end
env.reverse_merge!(default_env)
# NOTE: rack-test v0.5 doesn't build a default uri correctly
# Make sure requested path is always a full uri
......
......@@ -521,4 +521,12 @@ def app
get '/foo'
assert_raise(NameError) { missing_path }
end
test "process reuse the env we pass as argument" do
env = { :SERVER_NAME => 'server', 'action_dispatch.custom' => 'custom' }
get '/foo', nil, env
assert_equal :get, env[:method]
assert_equal 'server', env[:SERVER_NAME]
assert_equal 'custom', env['action_dispatch.custom']
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册