[前][次][番号順一覧][スレッド一覧]

ruby-changes:59144

From: Yusuke <ko1@a...>
Date: Tue, 10 Dec 2019 09:45:40 +0900 (JST)
Subject: [ruby-changes:59144] 660388f6c5 (master): test/net/http/test_https.rb (test_get_SNI_failure): stop proxy settings

https://git.ruby-lang.org/ruby.git/commit/?id=660388f6c5

From 660388f6c5b148ea6f84d589482391bf78f35c6b Mon Sep 17 00:00:00 2001
From: Yusuke Endoh <mame@r...>
Date: Tue, 10 Dec 2019 09:41:33 +0900
Subject: 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.

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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L34
   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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L115
   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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L125
   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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L135
   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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L146
   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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L156
   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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L172
   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@p...:8000'
 
       http = Net::HTTP.new 'hostname.example'
@@ -189,13 +189,13 @@ class TestNetHTTP < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L189
   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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L204
   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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L216
   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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L226
   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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L235
     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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_http.rb#L243
     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 https://github.com/ruby/ruby/blob/trunk/test/net/http/test_https.rb#L68
   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 https://github.com/ruby/ruby/blob/trunk/test/net/http/utils.rb#L107
     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
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]