diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-09-12 14:19:58 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-09-12 14:19:58 +0000 |
commit | f468013c2e69dc6e0b7b0e8a7c390a23aab6c48e (patch) | |
tree | 5df90caebf088a8ed37d7417da34f4bb237feb37 | |
parent | 13e621789e011d8876721a45e46722d38d15f006 (diff) | |
download | ruby-f468013c2e69dc6e0b7b0e8a7c390a23aab6c48e.tar.gz ruby-f468013c2e69dc6e0b7b0e8a7c390a23aab6c48e.tar.xz ruby-f468013c2e69dc6e0b7b0e8a7c390a23aab6c48e.zip |
test ftp over http proxy.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@24866 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | test/open-uri/test_open-uri.rb | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/test/open-uri/test_open-uri.rb b/test/open-uri/test_open-uri.rb index 846e87f19..ce611b35c 100644 --- a/test/open-uri/test_open-uri.rb +++ b/test/open-uri/test_open-uri.rb @@ -424,5 +424,60 @@ class TestOpenURI < Test::Unit::TestCase end } end + + def test_ftp_over_http_proxy + TCPServer.open("127.0.0.1", 0) {|proxy_serv| + proxy_port = proxy_serv.addr[1] + th = Thread.new { + proxy_sock = proxy_serv.accept + begin + req = proxy_sock.gets("\r\n\r\n") + assert_match(%r{\AGET ftp://192.0.2.1/foo/bar }, req) + proxy_sock.print "HTTP/1.0 200 OK\r\n" + proxy_sock.print "Content-Length: 4\r\n\r\n" + proxy_sock.print "ab\r\n" + proxy_sock.close + ensure + proxy_sock.close + end + } + begin + with_env('ftp_proxy'=>"http://127.0.0.1:#{proxy_port}") { + content = URI("ftp://192.0.2.1/foo/bar").read + assert_equal("ab\r\n", content) + } + ensure + Thread.kill(th) + end + } + end + + def test_ftp_over_http_proxy_auth + TCPServer.open("127.0.0.1", 0) {|proxy_serv| + proxy_port = proxy_serv.addr[1] + th = Thread.new { + proxy_sock = proxy_serv.accept + begin + req = proxy_sock.gets("\r\n\r\n") + assert_match(%r{\AGET ftp://192.0.2.1/foo/bar }, req) + assert_match(%r{Proxy-Authorization: Basic #{['proxy-user:proxy-password'].pack('m').chomp}\r\n}, req) + proxy_sock.print "HTTP/1.0 200 OK\r\n" + proxy_sock.print "Content-Length: 4\r\n\r\n" + proxy_sock.print "ab\r\n" + proxy_sock.close + ensure + proxy_sock.close + end + } + begin + content = URI("ftp://192.0.2.1/foo/bar").read( + :proxy_http_basic_authentication => ["http://127.0.0.1:#{proxy_port}", "proxy-user", "proxy-password"]) + assert_equal("ab\r\n", content) + ensure + Thread.kill(th) + end + } + end + end |