diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/unit/test_http_parser_ng.rb | 123 | ||||
-rw-r--r-- | test/unit/test_http_parser_xftrust.rb | 38 | ||||
-rw-r--r-- | test/unit/test_response.rb | 6 | ||||
-rw-r--r-- | test/unit/test_sni_hostnames.rb | 47 | ||||
-rw-r--r-- | test/unit/test_socket_helper.rb | 2 |
5 files changed, 8 insertions, 208 deletions
diff --git a/test/unit/test_http_parser_ng.rb b/test/unit/test_http_parser_ng.rb index 4f13c9a..efd82e1 100644 --- a/test/unit/test_http_parser_ng.rb +++ b/test/unit/test_http_parser_ng.rb @@ -8,10 +8,15 @@ include Unicorn class HttpParserNgTest < Test::Unit::TestCase def setup - HttpParser.keepalive_requests = HttpParser::KEEPALIVE_REQUESTS_DEFAULT @parser = HttpParser.new end + def test_parser_max_len + assert_raises(RangeError) do + HttpParser.max_header_len = 0xffffffff + 1 + end + end + def test_next_clear r = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" @parser.buf << r @@ -29,25 +34,6 @@ class HttpParserNgTest < Test::Unit::TestCase assert_equal false, @parser.response_start_sent end - def test_keepalive_requests_default_constant - assert_kind_of Integer, HttpParser::KEEPALIVE_REQUESTS_DEFAULT - assert HttpParser::KEEPALIVE_REQUESTS_DEFAULT >= 0 - end - - def test_keepalive_requests_setting - HttpParser.keepalive_requests = 0 - assert_equal 0, HttpParser.keepalive_requests - HttpParser.keepalive_requests = nil - assert HttpParser.keepalive_requests >= 0xffffffff - HttpParser.keepalive_requests = 1 - assert_equal 1, HttpParser.keepalive_requests - HttpParser.keepalive_requests = 666 - assert_equal 666, HttpParser.keepalive_requests - - assert_raises(TypeError) { HttpParser.keepalive_requests = "666" } - assert_raises(TypeError) { HttpParser.keepalive_requests = [] } - end - def test_connection_TE @parser.buf << "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: TE\r\n" @parser.buf << "TE: trailers\r\n\r\n" @@ -71,41 +57,11 @@ class HttpParserNgTest < Test::Unit::TestCase "REQUEST_METHOD" => "GET", "QUERY_STRING" => "" }.freeze - HttpParser::KEEPALIVE_REQUESTS_DEFAULT.times do |nr| + 100.times do |nr| @parser.buf << req assert_equal expect, @parser.parse assert @parser.next? end - @parser.buf << req - assert_equal expect, @parser.parse - assert ! @parser.next? - end - - def test_fewer_keepalive_requests_with_next? - HttpParser.keepalive_requests = 5 - @parser = HttpParser.new - req = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n".freeze - expect = { - "SERVER_NAME" => "example.com", - "HTTP_HOST" => "example.com", - "rack.url_scheme" => "http", - "REQUEST_PATH" => "/", - "SERVER_PROTOCOL" => "HTTP/1.1", - "PATH_INFO" => "/", - "HTTP_VERSION" => "HTTP/1.1", - "REQUEST_URI" => "/", - "SERVER_PORT" => "80", - "REQUEST_METHOD" => "GET", - "QUERY_STRING" => "" - }.freeze - 5.times do |nr| - @parser.buf << req - assert_equal expect, @parser.parse - assert @parser.next? - end - @parser.buf << req - assert_equal expect, @parser.parse - assert ! @parser.next? end def test_default_keepalive_is_off @@ -663,69 +619,4 @@ class HttpParserNgTest < Test::Unit::TestCase assert_equal expect, env2 assert_equal "", @parser.buf end - - def test_keepalive_requests_disabled - req = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n".freeze - expect = { - "SERVER_NAME" => "example.com", - "HTTP_HOST" => "example.com", - "rack.url_scheme" => "http", - "REQUEST_PATH" => "/", - "SERVER_PROTOCOL" => "HTTP/1.1", - "PATH_INFO" => "/", - "HTTP_VERSION" => "HTTP/1.1", - "REQUEST_URI" => "/", - "SERVER_PORT" => "80", - "REQUEST_METHOD" => "GET", - "QUERY_STRING" => "" - }.freeze - HttpParser.keepalive_requests = 0 - @parser = HttpParser.new - @parser.buf << req - assert_equal expect, @parser.parse - assert ! @parser.next? - end - - def test_chunk_only - tmp = "" - assert_equal @parser, @parser.dechunk! - assert_nil @parser.filter_body(tmp, "6\r\n") - assert_equal "", tmp - assert_nil @parser.filter_body(tmp, "abcdef") - assert_equal "abcdef", tmp - assert_nil @parser.filter_body(tmp, "\r\n") - assert_equal "", tmp - src = "0\r\n\r\n" - assert_equal src.object_id, @parser.filter_body(tmp, src).object_id - assert_equal "", tmp - end - - def test_chunk_only_bad_align - tmp = "" - assert_equal @parser, @parser.dechunk! - assert_nil @parser.filter_body(tmp, "6\r\na") - assert_equal "a", tmp - assert_nil @parser.filter_body(tmp, "bcde") - assert_equal "bcde", tmp - assert_nil @parser.filter_body(tmp, "f\r") - assert_equal "f", tmp - src = "\n0\r\n\r\n" - assert_equal src.object_id, @parser.filter_body(tmp, src).object_id - assert_equal "", tmp - end - - def test_chunk_only_reset_ok - tmp = "" - assert_equal @parser, @parser.dechunk! - src = "1\r\na\r\n0\r\n\r\n" - assert_nil @parser.filter_body(tmp, src) - assert_equal "a", tmp - assert_equal src.object_id, @parser.filter_body(tmp, src).object_id - - assert_equal @parser, @parser.dechunk! - src = "0\r\n\r\n" - assert_equal src.object_id, @parser.filter_body(tmp, src).object_id - assert_equal "", tmp - assert_equal src, @parser.filter_body(tmp, src) - end end diff --git a/test/unit/test_http_parser_xftrust.rb b/test/unit/test_http_parser_xftrust.rb deleted file mode 100644 index 8d0cc37..0000000 --- a/test/unit/test_http_parser_xftrust.rb +++ /dev/null @@ -1,38 +0,0 @@ -# -*- encoding: binary -*- -require './test/test_helper' - -include Unicorn - -class HttpParserXFTrustTest < Test::Unit::TestCase - def setup - assert HttpParser.trust_x_forwarded? - end - - def test_xf_trust_false_xfp - HttpParser.trust_x_forwarded = false - parser = HttpParser.new - parser.buf << "GET / HTTP/1.1\r\nHost: foo:\r\n" \ - "X-Forwarded-Proto: https\r\n\r\n" - env = parser.parse - assert_kind_of Hash, env - assert_equal 'foo', env['SERVER_NAME'] - assert_equal '80', env['SERVER_PORT'] - assert_equal 'http', env['rack.url_scheme'] - end - - def test_xf_trust_false_xfs - HttpParser.trust_x_forwarded = false - parser = HttpParser.new - parser.buf << "GET / HTTP/1.1\r\nHost: foo:\r\n" \ - "X-Forwarded-SSL: on\r\n\r\n" - env = parser.parse - assert_kind_of Hash, env - assert_equal 'foo', env['SERVER_NAME'] - assert_equal '80', env['SERVER_PORT'] - assert_equal 'http', env['rack.url_scheme'] - end - - def teardown - HttpParser.trust_x_forwarded = true - end -end diff --git a/test/unit/test_response.rb b/test/unit/test_response.rb index 10b247b..d0f0c79 100644 --- a/test/unit/test_response.rb +++ b/test/unit/test_response.rb @@ -38,7 +38,6 @@ class ResponseTest < Test::Unit::TestCase http_response_write(out,'200', {}, []) assert ! out.closed? assert out.length > 0, "output didn't have data" - assert_equal 1, out.string.split(/\r\n/).grep(/^Status: 200 OK/).size end def test_response_200 @@ -71,7 +70,6 @@ class ResponseTest < Test::Unit::TestCase out = StringIO.new http_response_write(out,200, {"X-Whatever" => "stuff"}, []) assert ! out.closed? - assert_equal 1, out.string.split(/\r\n/).grep(/^Status: 200 OK/i).size end def test_body_closed @@ -91,9 +89,5 @@ class ResponseTest < Test::Unit::TestCase assert ! out.closed? headers = out.string.split(/\r\n\r\n/).first.split(/\r\n/) assert %r{\AHTTP/\d\.\d 666 I AM THE BEAST\z}.match(headers[0]) - status = headers.grep(/\AStatus:/i).first - assert status - assert_equal "Status: 666 I AM THE BEAST", status end - end diff --git a/test/unit/test_sni_hostnames.rb b/test/unit/test_sni_hostnames.rb deleted file mode 100644 index 457afee..0000000 --- a/test/unit/test_sni_hostnames.rb +++ /dev/null @@ -1,47 +0,0 @@ -# -*- encoding: binary -*- -require "test/unit" -require "unicorn" - -# this tests an implementation detail, it may change so this test -# can be removed later. -class TestSniHostnames < Test::Unit::TestCase - include Unicorn::SSLServer - - def setup - GC.start - end - - def teardown - GC.start - end - - def test_host_name_detect_one - app = Rack::Builder.new do - map "http://sni1.example.com/" do - use Rack::ContentLength - use Rack::ContentType, "text/plain" - run lambda { |env| [ 200, {}, [] ] } - end - end.to_app - hostnames = rack_sni_hostnames(app) - assert hostnames.include?("sni1.example.com") - end - - def test_host_name_detect_multiple - app = Rack::Builder.new do - map "http://sni2.example.com/" do - use Rack::ContentLength - use Rack::ContentType, "text/plain" - run lambda { |env| [ 200, {}, [] ] } - end - map "http://sni3.example.com/" do - use Rack::ContentLength - use Rack::ContentType, "text/plain" - run lambda { |env| [ 200, {}, [] ] } - end - end.to_app - hostnames = rack_sni_hostnames(app) - assert hostnames.include?("sni2.example.com") - assert hostnames.include?("sni3.example.com") - end -end diff --git a/test/unit/test_socket_helper.rb b/test/unit/test_socket_helper.rb index 09d65af..7526e82 100644 --- a/test/unit/test_socket_helper.rb +++ b/test/unit/test_socket_helper.rb @@ -189,7 +189,7 @@ class TestSocketHelper < Test::Unit::TestCase port = unused_port @test_addr name = "#@test_addr:#{port}" sock = bind_listen(name, :reuseport => true) - cur = sock.getsockopt(Socket::SOL_SOCKET, SO_REUSEPORT).unpack('i')[0] + cur = sock.getsockopt(:SOL_SOCKET, :SO_REUSEPORT).int assert_operator cur, :>, 0 rescue Errno::ENOPROTOOPT # kernel does not support SO_REUSEPORT (older Linux) |