diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:02:05 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 15:02:05 +0000 |
commit | 0dc342de848a642ecce8db697b8fecd83a63e117 (patch) | |
tree | 2b7ed4724aff1f86073e4740134bda9c4aac1a39 /trunk/test/net/http/test_http.rb | |
parent | ef70cf7138ab8034b5b806f466e4b484b24f0f88 (diff) |
added tag v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/test/net/http/test_http.rb')
-rw-r--r-- | trunk/test/net/http/test_http.rb | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/trunk/test/net/http/test_http.rb b/trunk/test/net/http/test_http.rb new file mode 100644 index 0000000000..50d1fe2eae --- /dev/null +++ b/trunk/test/net/http/test_http.rb @@ -0,0 +1,320 @@ +# $Id$ + +require 'test/unit' +require 'net/http' +require 'stringio' +require File.expand_path("utils", File.dirname(__FILE__)) + +module TestNetHTTP_version_1_1_methods + + def test_s_get + assert_equal $test_net_http_data, + Net::HTTP.get(config('host'), '/', config('port')) + end + + def test_head + start {|http| + res = http.head('/') + assert_kind_of Net::HTTPResponse, res + assert_equal $test_net_http_data_type, res['Content-Type'] + assert_equal $test_net_http_data.size, res['Content-Length'].to_i + } + end + + def test_get + start {|http| + _test_get__get http + _test_get__iter http + _test_get__chunked http + } + end + + def _test_get__get(http) + res, body = http.get('/') + assert_kind_of Net::HTTPResponse, res + assert_kind_of String, res.body + assert_kind_of String, body + assert_not_nil res['content-length'] + assert_equal $test_net_http_data.size, res['content-length'].to_i + assert_equal $test_net_http_data_type, res['Content-Type'] + assert_equal $test_net_http_data.size, body.size + assert_equal $test_net_http_data, body + assert_equal $test_net_http_data.size, res.body.size + assert_equal $test_net_http_data, res.body + end + + def _test_get__iter(http) + buf = '' + res, body = http.get('/') {|s| buf << s } + assert_kind_of Net::HTTPResponse, res + # assert_kind_of String, res.body + # assert_kind_of String, body + assert_not_nil res['content-length'] + assert_equal $test_net_http_data.size, res['content-length'].to_i + assert_equal $test_net_http_data_type, res['Content-Type'] + assert_equal $test_net_http_data.size, buf.size + assert_equal $test_net_http_data, buf + # assert_equal $test_net_http_data.size, res.body.size + # assert_equal $test_net_http_data, res.body + end + + def _test_get__chunked(http) + buf = '' + res, body = http.get('/') {|s| buf << s } + assert_kind_of Net::HTTPResponse, res + # assert_kind_of String, res.body + # assert_kind_of String, body + assert_not_nil res['content-length'] + assert_equal $test_net_http_data.size, res['content-length'].to_i + assert_equal $test_net_http_data_type, res['Content-Type'] + assert_equal $test_net_http_data.size, buf.size + assert_equal $test_net_http_data, buf + # assert_equal $test_net_http_data.size, res.body.size + # assert_equal $test_net_http_data, res.body + end + + def test_get__break + i = 0 + start {|http| + http.get('/') do |str| + i += 1 + break + end + } + assert_equal 1, i + end + + def test_get__implicit_start + res, body = new().get('/') + assert_kind_of Net::HTTPResponse, res + assert_kind_of String, body + assert_kind_of String, res.body + assert_not_nil res['content-length'] + assert_equal $test_net_http_data_type, res['Content-Type'] + assert_equal $test_net_http_data.size, res.body.size + assert_equal $test_net_http_data, res.body + end + + def test_get2 + start {|http| + http.get2('/') {|res| + assert_kind_of Net::HTTPResponse, res + assert_kind_of Net::HTTPResponse, res.header + assert_not_nil res['content-length'] + assert_equal $test_net_http_data_type, res['Content-Type'] + assert_kind_of String, res.body + assert_kind_of String, res.entity + assert_equal $test_net_http_data.size, res.body.size + assert_equal $test_net_http_data, res.body + assert_equal $test_net_http_data, res.entity + } + } + end + + def test_post + start {|http| + _test_post__base http + _test_post__file http + } + end + + def _test_post__base(http) + uheader = {} + uheader['Accept'] = 'application/octet-stream' + data = 'post data' + res, body = http.post('/', data) + assert_kind_of Net::HTTPResponse, res + assert_kind_of String, body + assert_kind_of String, res.body + assert_equal data, body + assert_equal data, res.body + assert_equal data, res.entity + end + + def _test_post__file(http) + data = 'post data' + f = StringIO.new + http.post('/', data, nil, f) + assert_equal data, f.string + end + + def test_s_post_form + res = Net::HTTP.post_form( + URI.parse("http://#{config('host')}:#{config('port')}/"), + "a" => "x") + assert_equal ["a=x"], res.body.split(/[;&]/).sort + + res = Net::HTTP.post_form( + URI.parse("http://#{config('host')}:#{config('port')}/"), + "a" => "x", + "b" => "y") + assert_equal ["a=x", "b=y"], res.body.split(/[;&]/).sort + + res = Net::HTTP.post_form( + URI.parse("http://#{config('host')}:#{config('port')}/"), + "a" => ["x1", "x2"], + "b" => "y") + assert_equal ["a=x1", "a=x2", "b=y"], res.body.split(/[;&]/).sort + end + +end + + +module TestNetHTTP_version_1_2_methods + + def test_request + start {|http| + _test_request__GET http + _test_request__file http + # _test_request__range http # WEBrick does not support Range: header. + _test_request__HEAD http + _test_request__POST http + _test_request__stream_body http + } + end + + def _test_request__GET(http) + req = Net::HTTP::Get.new('/') + http.request(req) {|res| + assert_kind_of Net::HTTPResponse, res + assert_kind_of String, res.body + assert_not_nil res['content-length'] + assert_equal $test_net_http_data.size, res['content-length'].to_i + assert_equal $test_net_http_data.size, res.body.size + assert_equal $test_net_http_data, res.body + } + end + + def _test_request__file(http) + req = Net::HTTP::Get.new('/') + http.request(req) {|res| + assert_kind_of Net::HTTPResponse, res + assert_not_nil res['content-length'] + assert_equal $test_net_http_data.size, res['content-length'].to_i + f = StringIO.new("".force_encoding("ASCII-8BIT")) + res.read_body f + assert_equal $test_net_http_data.bytesize, f.string.bytesize + assert_equal $test_net_http_data.encoding, f.string.encoding + assert_equal $test_net_http_data, f.string + } + end + + def _test_request__range(http) + req = Net::HTTP::Get.new('/') + req['range'] = 'bytes=0-5' + assert_equal $test_net_http_data[0,6], http.request(req).body + end + + def _test_request__HEAD(http) + req = Net::HTTP::Head.new('/') + http.request(req) {|res| + assert_kind_of Net::HTTPResponse, res + assert_not_nil res['content-length'] + assert_equal $test_net_http_data.size, res['content-length'].to_i + assert_nil res.body + } + end + + def _test_request__POST(http) + data = 'post data' + req = Net::HTTP::Post.new('/') + req['Accept'] = $test_net_http_data_type + http.request(req, data) {|res| + assert_kind_of Net::HTTPResponse, res + assert_equal data.size, res['content-length'].to_i + assert_kind_of String, res.body + assert_equal data, res.body + } + end + + def _test_request__stream_body(http) + req = Net::HTTP::Post.new('/') + data = $test_net_http_data + req.content_length = data.size + req.body_stream = StringIO.new(data) + res = http.request(req) + assert_kind_of Net::HTTPResponse, res + assert_kind_of String, res.body + assert_equal data.size, res.body.size + assert_equal data, res.body + end + + def test_send_request + start {|http| + _test_send_request__GET http + _test_send_request__POST http + } + end + + def _test_send_request__GET(http) + res = http.send_request('GET', '/') + assert_kind_of Net::HTTPResponse, res + assert_equal $test_net_http_data.size, res['content-length'].to_i + assert_kind_of String, res.body + assert_equal $test_net_http_data, res.body + end + + def _test_send_request__POST(http) + data = 'aaabbb cc ddddddddddd lkjoiu4j3qlkuoa' + res = http.send_request('POST', '/', data) + assert_kind_of Net::HTTPResponse, res + assert_kind_of String, res.body + assert_equal data.size, res.body.size + assert_equal data, res.body + end +end + +class TestNetHTTP_version_1_1 < Test::Unit::TestCase + CONFIG = { + 'host' => '127.0.0.1', + 'port' => 10081, + 'proxy_host' => nil, + 'proxy_port' => nil, + } + + include TestNetHTTPUtils + include TestNetHTTP_version_1_1_methods + + def new + Net::HTTP.version_1_1 + super + end +end + +class TestNetHTTP_v1_2 < Test::Unit::TestCase + CONFIG = { + 'host' => '127.0.0.1', + 'port' => 10081, + 'proxy_host' => nil, + 'proxy_port' => nil, + } + + include TestNetHTTPUtils + include TestNetHTTP_version_1_1_methods + include TestNetHTTP_version_1_2_methods + + def new + Net::HTTP.version_1_2 + super + end +end + +=begin +class TestNetHTTP_proxy < Test::Unit::TestCase + CONFIG = { + 'host' => '127.0.0.1', + 'port' => 10081, + 'proxy_host' => '127.0.0.1', + 'proxy_port' => 10082, + } + + include TestNetHTTPUtils + include TestNetHTTP_version_1_1_methods + include TestNetHTTP_version_1_2_methods + + def new + Net::HTTP.version_1_2 + super + end +end +=end |