summaryrefslogtreecommitdiff
path: root/test/net
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2019-12-10 09:41:33 +0900
committerYusuke Endoh <mame@ruby-lang.org>2019-12-10 09:41:33 +0900
commit660388f6c5b148ea6f84d589482391bf78f35c6b (patch)
treed7890a0384bcfedac5a3848a5c568360d2ff773e /test/net
parent6a22b2a091eda81a473eb1b0cc69fe0792560e27 (diff)
test/net/http/test_https.rb (test_get_SNI_failure): stop proxy settings
Because the test fails under HTTP proxy settings. https://rubyci.org/logs/rubyci.s3.amazonaws.com/solaris10-gcc/ruby-master/log/20191210T000004Z.fail.html.gz ``` 1) Failure: TestNetHTTPS#test_get_SNI_failure [/export/home/users/chkbuild/cb-gcc/tmp/build/20191210T000004Z/ruby/test/net/http/test_https.rb:81]: [OpenSSL::SSL::SSLError] exception expected, not #<Net::HTTPServerException: 403 "Forbidden">. ``` The new SNI feature introduced at 54072e329c may need to be improved for HTTP proxy environment.
Diffstat (limited to 'test/net')
-rw-r--r--test/net/http/test_http.rb47
-rw-r--r--test/net/http/test_https.rb22
-rw-r--r--test/net/http/utils.rb19
3 files changed, 45 insertions, 43 deletions
diff --git a/test/net/http/test_http.rb b/test/net/http/test_http.rb
index f648ce5..231aa48 100644
--- a/test/net/http/test_http.rb
+++ b/test/net/http/test_http.rb
@@ -34,7 +34,7 @@ class TestNetHTTP < Test::Unit::TestCase
end
def test_class_Proxy_from_ENV
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
ENV['http_proxy'] = 'http://proxy.example:8000'
# These are ignored on purpose. See Bug 4388 and Feature 6546
@@ -115,7 +115,7 @@ class TestNetHTTP < Test::Unit::TestCase
end
def test_proxy_address
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
http = Net::HTTP.new 'hostname.example', nil, 'proxy.example'
assert_equal 'proxy.example', http.proxy_address
@@ -125,7 +125,7 @@ class TestNetHTTP < Test::Unit::TestCase
end
def test_proxy_address_no_proxy
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
http = Net::HTTP.new 'hostname.example', nil, 'proxy.example', nil, nil, nil, 'example'
assert_nil http.proxy_address
@@ -135,7 +135,7 @@ class TestNetHTTP < Test::Unit::TestCase
end
def test_proxy_from_env_ENV
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
ENV['http_proxy'] = 'http://proxy.example:8000'
assert_equal false, Net::HTTP.proxy_class?
@@ -146,7 +146,7 @@ class TestNetHTTP < Test::Unit::TestCase
end
def test_proxy_address_ENV
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
ENV['http_proxy'] = 'http://proxy.example:8000'
http = Net::HTTP.new 'hostname.example'
@@ -156,13 +156,13 @@ class TestNetHTTP < Test::Unit::TestCase
end
def test_proxy_eh_no_proxy
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
assert_equal false, Net::HTTP.new('hostname.example', nil, nil).proxy?
end
end
def test_proxy_eh_ENV
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
ENV['http_proxy'] = 'http://proxy.example:8000'
http = Net::HTTP.new 'hostname.example'
@@ -172,7 +172,7 @@ class TestNetHTTP < Test::Unit::TestCase
end
def test_proxy_eh_ENV_with_user
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
ENV['http_proxy'] = 'http://foo:bar@proxy.example:8000'
http = Net::HTTP.new 'hostname.example'
@@ -189,13 +189,13 @@ class TestNetHTTP < Test::Unit::TestCase
end
def test_proxy_eh_ENV_none_set
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
assert_equal false, Net::HTTP.new('hostname.example').proxy?
end
end
def test_proxy_eh_ENV_no_proxy
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
ENV['http_proxy'] = 'http://proxy.example:8000'
ENV['no_proxy'] = 'hostname.example'
@@ -204,7 +204,7 @@ class TestNetHTTP < Test::Unit::TestCase
end
def test_proxy_port
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
http = Net::HTTP.new 'example', nil, 'proxy.example'
assert_equal 'proxy.example', http.proxy_address
assert_equal 80, http.proxy_port
@@ -216,7 +216,7 @@ class TestNetHTTP < Test::Unit::TestCase
end
def test_proxy_port_ENV
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
ENV['http_proxy'] = 'http://proxy.example:8000'
http = Net::HTTP.new 'hostname.example'
@@ -226,7 +226,7 @@ class TestNetHTTP < Test::Unit::TestCase
end
def test_newobj
- clean_http_proxy_env do
+ TestNetHTTPUtils.clean_http_proxy_env do
ENV['http_proxy'] = 'http://proxy.example:8000'
http = Net::HTTP.newobj 'hostname.example'
@@ -235,25 +235,6 @@ class TestNetHTTP < Test::Unit::TestCase
end
end
- def clean_http_proxy_env
- orig = {
- 'http_proxy' => ENV['http_proxy'],
- 'http_proxy_user' => ENV['http_proxy_user'],
- 'http_proxy_pass' => ENV['http_proxy_pass'],
- 'no_proxy' => ENV['no_proxy'],
- }
-
- orig.each_key do |key|
- ENV.delete key
- end
-
- yield
- ensure
- orig.each do |key, value|
- ENV[key] = value
- end
- end
-
def test_failure_message_includes_failed_domain_and_port
# hostname to be included in the error message
host = Struct.new(:to_s).new("<example>")
@@ -262,7 +243,7 @@ class TestNetHTTP < Test::Unit::TestCase
def host.to_str; raise SocketError, "open failure"; end
uri = Struct.new(:scheme, :hostname, :port).new("http", host, port)
assert_raise_with_message(SocketError, /#{host}:#{port}/) do
- clean_http_proxy_env{ Net::HTTP.get(uri) }
+ TestNetHTTPUtils.clean_http_proxy_env{ Net::HTTP.get(uri) }
end
end
diff --git a/test/net/http/test_https.rb b/test/net/http/test_https.rb
index 9058387..3e918a1 100644
--- a/test/net/http/test_https.rb
+++ b/test/net/http/test_https.rb
@@ -68,17 +68,19 @@ class TestNetHTTPS < Test::Unit::TestCase
end
def test_get_SNI_failure
- http = Net::HTTP.new("invalid_servername", config("port"))
- http.ipaddr = config('host')
- http.use_ssl = true
- http.cert_store = TEST_STORE
- certs = []
- http.verify_callback = Proc.new do |preverify_ok, store_ctx|
- certs << store_ctx.current_cert
- preverify_ok
+ TestNetHTTPUtils.clean_http_proxy_env do
+ http = Net::HTTP.new("invalid_servername", config("port"))
+ http.ipaddr = config('host')
+ http.use_ssl = true
+ http.cert_store = TEST_STORE
+ certs = []
+ http.verify_callback = Proc.new do |preverify_ok, store_ctx|
+ certs << store_ctx.current_cert
+ preverify_ok
+ end
+ @log_tester = lambda {|_| }
+ assert_raise(OpenSSL::SSL::SSLError){ http.start }
end
- @log_tester = lambda {|_| }
- assert_raise(OpenSSL::SSL::SSLError){ http.start }
end
def test_post
diff --git a/test/net/http/utils.rb b/test/net/http/utils.rb
index dbfd112..53f3be0 100644
--- a/test/net/http/utils.rb
+++ b/test/net/http/utils.rb
@@ -107,4 +107,23 @@ module TestNetHTTPUtils
def print(*args) end
def printf(*args) end
end
+
+ def self.clean_http_proxy_env
+ orig = {
+ 'http_proxy' => ENV['http_proxy'],
+ 'http_proxy_user' => ENV['http_proxy_user'],
+ 'http_proxy_pass' => ENV['http_proxy_pass'],
+ 'no_proxy' => ENV['no_proxy'],
+ }
+
+ orig.each_key do |key|
+ ENV.delete key
+ end
+
+ yield
+ ensure
+ orig.each do |key, value|
+ ENV[key] = value
+ end
+ end
end