OSDN Git Service

ruby-1.9.1-rc1
[splhack/AndroidRuby.git] / lib / ruby-1.9.1-rc1 / test / net / http / test_https_proxy.rb
diff --git a/lib/ruby-1.9.1-rc1/test/net/http/test_https_proxy.rb b/lib/ruby-1.9.1-rc1/test/net/http/test_https_proxy.rb
new file mode 100644 (file)
index 0000000..4f26342
--- /dev/null
@@ -0,0 +1,37 @@
+begin
+  require 'net/https'
+rescue LoadError
+end
+require 'test/unit'
+
+class HTTPSProxyTest < Test::Unit::TestCase
+  def test_https_proxy_authentication
+    t = nil
+    TCPServer.open("127.0.0.1", 0) {|serv|
+      _, port, _, _ = serv.addr
+      t = Thread.new {
+        proxy = Net::HTTP.Proxy("127.0.0.1", port, 'user', 'password')
+        http = proxy.new("foo.example.org", 8000)
+        http.use_ssl = true
+        http.verify_mode = OpenSSL::SSL::VERIFY_NONE
+        begin
+          http.start
+        rescue EOFError
+        end
+      }
+      sock = serv.accept
+      proxy_request = sock.gets("\r\n\r\n")
+      assert_equal(
+        "CONNECT foo.example.org:8000 HTTP/1.1\r\n" +
+        "Host: foo.example.org:8000\r\n" +
+        "Proxy-Authorization: Basic dXNlcjpwYXNzd29yZA==\r\n" +
+        "\r\n",
+        proxy_request,
+        "[ruby-dev:25673]")
+      sock.close
+    }
+  ensure
+    t.join if t
+  end
+end if defined?(OpenSSL)