summaryrefslogtreecommitdiff
path: root/test/open-uri/test_ssl.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/open-uri/test_ssl.rb')
-rw-r--r--test/open-uri/test_ssl.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/open-uri/test_ssl.rb b/test/open-uri/test_ssl.rb
index 28c9ecf46f..29c794a598 100644
--- a/test/open-uri/test_ssl.rb
+++ b/test/open-uri/test_ssl.rb
@@ -1,8 +1,10 @@
require 'test/unit'
require 'open-uri'
require 'openssl'
+require 'stringio'
require 'webrick'
require 'webrick/https'
+require 'webrick/httpproxy'
class TestOpenURISSL < Test::Unit::TestCase
@@ -59,6 +61,31 @@ class TestOpenURISSL < Test::Unit::TestCase
}
end
+ def test_proxy
+ with_https {|srv, dr, url|
+ cacert_filename = "#{dr}/cacert.pem"
+ open(cacert_filename, "w") {|f| f << CA_CERT }
+ prxy = WEBrick::HTTPProxyServer.new({
+ :ServerType => Thread,
+ :Logger => WEBrick::Log.new(NullLog),
+ :AccessLog => [[sio=StringIO.new, WEBrick::AccessLog::COMMON_LOG_FORMAT]],
+ :BindAddress => '127.0.0.1',
+ :Port => 0})
+ _, p_port, _, p_host = prxy.listeners[0].addr
+ begin
+ th = prxy.start
+ open("#{dr}/proxy", "w") {|f| f << "proxy" }
+ open("#{url}/proxy", :proxy=>"http://#{p_host}:#{p_port}/", :ssl_ca_cert => cacert_filename) {|f|
+ assert_equal("200", f.status[0])
+ assert_equal("proxy", f.read)
+ }
+ assert_match(%r[CONNECT #{url.sub(%r{\Ahttps://}, '')} ], sio.string)
+ ensure
+ prxy.shutdown
+ end
+ }
+ end
+
end
# mkdir demoCA demoCA/private demoCA/newcerts