Allow overriding of all headers from passed environment hash
Allow REMOTE_ADDR, HTTP_HOST and HTTP_USER_AGENT to be overridden from the environment passed into `ActionDispatch::TestRequest.new`. Fixes #11590
This commit is contained in:
parent
7af0ae919f
commit
4db0637d55
@ -1,3 +1,10 @@
|
||||
* Allow REMOTE_ADDR, HTTP_HOST and HTTP_USER_AGENT to be overridden from
|
||||
the environment passed into `ActionDispatch::TestRequest.new`.
|
||||
|
||||
Fixes #11590
|
||||
|
||||
*Andrew White*
|
||||
|
||||
* Fix an issue where Journey was failing to clear the named routes hash when the
|
||||
routes were reloaded and since it doesn't overwrite existing routes then if a
|
||||
route changed but wasn't renamed it kept the old definition. This was being
|
||||
|
@ -3,7 +3,11 @@
|
||||
|
||||
module ActionDispatch
|
||||
class TestRequest < Request
|
||||
DEFAULT_ENV = Rack::MockRequest.env_for('/')
|
||||
DEFAULT_ENV = Rack::MockRequest.env_for('/',
|
||||
'HTTP_HOST' => 'test.host',
|
||||
'REMOTE_ADDR' => '0.0.0.0',
|
||||
'HTTP_USER_AGENT' => 'Rails Testing'
|
||||
)
|
||||
|
||||
def self.new(env = {})
|
||||
super
|
||||
@ -12,10 +16,6 @@ def self.new(env = {})
|
||||
def initialize(env = {})
|
||||
env = Rails.application.env_config.merge(env) if defined?(Rails.application) && Rails.application
|
||||
super(default_env.merge(env))
|
||||
|
||||
self.host = 'test.host'
|
||||
self.remote_addr = '0.0.0.0'
|
||||
self.user_agent = 'Rails Testing'
|
||||
end
|
||||
|
||||
def request_method=(method)
|
||||
|
@ -62,6 +62,36 @@ class TestRequestTest < ActiveSupport::TestCase
|
||||
assert_equal false, req.env.empty?
|
||||
end
|
||||
|
||||
test "default remote address is 0.0.0.0" do
|
||||
req = ActionDispatch::TestRequest.new
|
||||
assert_equal '0.0.0.0', req.remote_addr
|
||||
end
|
||||
|
||||
test "allows remote address to be overridden" do
|
||||
req = ActionDispatch::TestRequest.new('REMOTE_ADDR' => '127.0.0.1')
|
||||
assert_equal '127.0.0.1', req.remote_addr
|
||||
end
|
||||
|
||||
test "default host is test.host" do
|
||||
req = ActionDispatch::TestRequest.new
|
||||
assert_equal 'test.host', req.host
|
||||
end
|
||||
|
||||
test "allows host to be overridden" do
|
||||
req = ActionDispatch::TestRequest.new('HTTP_HOST' => 'www.example.com')
|
||||
assert_equal 'www.example.com', req.host
|
||||
end
|
||||
|
||||
test "default user agent is 'Rails Testing'" do
|
||||
req = ActionDispatch::TestRequest.new
|
||||
assert_equal 'Rails Testing', req.user_agent
|
||||
end
|
||||
|
||||
test "allows user agent to be overridden" do
|
||||
req = ActionDispatch::TestRequest.new('HTTP_USER_AGENT' => 'GoogleBot')
|
||||
assert_equal 'GoogleBot', req.user_agent
|
||||
end
|
||||
|
||||
private
|
||||
def assert_cookies(expected, cookie_jar)
|
||||
assert_equal(expected, cookie_jar.instance_variable_get("@cookies"))
|
||||
|
Loading…
Reference in New Issue
Block a user