test/jubilee/test_persistent.rb in jubilee-0.2.2 vs test/jubilee/test_persistent.rb in jubilee-0.4.0

- old
+ new

@@ -2,11 +2,11 @@ require 'timeout' require 'socket' class TestPersistent < MiniTest::Unit::TestCase def setup @valid_request = "GET / HTTP/1.1\r\nHost: test.com\r\nContent-Type: text/plain\r\n\r\n" - @close_request = "GET / HTTP/1.1\r\nHost: test.com\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\n" + @close_request = "GET / HTTP/1.1\r\nHost: test.com\r\nContent-Type: text/plain\r\nConnection: Close\r\n\r\n" @http10_request = "GET / HTTP/1.0\r\nHost: test.com\r\nContent-Type: text/plain\r\n\r\n" @keep_request = "GET / HTTP/1.0\r\nHost: test.com\r\nContent-Type: text/plain\r\nConnection: Keep-Alive\r\n\r\n" @valid_post = "POST / HTTP/1.1\r\nHost: test.com\r\nContent-Type: text/plain\r\nContent-Length: 5\r\n\r\nhello" @valid_no_body = "GET / HTTP/1.1\r\nHost: test.com\r\nX-Status: 204\r\nContent-Type: text/plain\r\n\r\n" @@ -25,10 +25,11 @@ @port = 3215 @server = Jubilee::Server.new @simple @server.start + sleep 0.1 @client = TCPSocket.new @host, @port end def teardown @client.close @@ -42,43 +43,47 @@ count.times { str << s.gets } end str end + def valid_response(size) + Regexp.new("HTTP/1.1 200 OK\r\nX-Header: Works\r\nContent-Length: #{size}\r\n\r\n", true) + end + def test_one_with_content_length @client << @valid_request sz = @body[0].size.to_s - assert_match Regexp.new("HTTP/1.1 200 OK\r\nContent-Length: #{sz}\r\nX-Header: Works\r\n\r\n", true), lines(4) + assert_match valid_response(sz), lines(4) assert_equal "Hello", @client.read(5) end def test_two_back_to_back @client << @valid_request sz = @body[0].size.to_s - assert_match Regexp.new("HTTP/1.1 200 OK\r\nContent-Length: #{sz}\r\nX-Header: Works\r\n\r\n", true), lines(4) + assert_match valid_response(sz), lines(4) assert_equal "Hello", @client.read(5) @client << @valid_request sz = @body[0].size.to_s - assert_match Regexp.new("HTTP/1.1 200 OK\r\nContent-Length: #{sz}\r\nX-Header: Works\r\n\r\n", true), lines(4) + assert_match valid_response(sz), lines(4) assert_equal "Hello", @client.read(5) end def test_post_then_get @client << @valid_post sz = @body[0].size.to_s - assert_match Regexp.new("HTTP/1.1 200 OK\r\nContent-Length: #{sz}\r\nX-Header: Works\r\n\r\n", true), lines(4) + assert_match valid_response(sz), lines(4) assert_equal "Hello", @client.read(5) @client << @valid_request sz = @body[0].size.to_s - assert_match Regexp.new("HTTP/1.1 200 OK\r\nContent-Length: #{sz}\r\nX-Header: Works\r\n\r\n", true), lines(4) + assert_match valid_response(sz), lines(4) assert_equal "Hello", @client.read(5) end #def test_no_body_then_get # @client << @valid_no_body @@ -94,62 +99,65 @@ def test_chunked @body << "Chunked" @client << @valid_request - assert_equal "HTTP/1.1 200 OK\r\nx-header: Works\r\nTransfer-Encoding: chunked\r\n\r\n5\r\nHello\r\n7\r\nChunked\r\n0\r\n\r\n", lines(10) + assert_equal "HTTP/1.1 200 OK\r\nX-Header: Works\r\nTransfer-Encoding: chunked\r\n\r\n5\r\nHello\r\n7\r\nChunked\r\n0\r\n\r\n", lines(10) end def test_no_chunked_in_http10 @body << "Chunked" @client << @http10_request - assert_equal "HTTP/1.0 200 OK\r\nConnection: close\r\nx-header: Works\r\n\r\n", lines(4) + assert_equal "HTTP/1.0 200 OK\r\nX-Header: Works\r\n\r\n", lines(3) assert_equal "HelloChunked", @client.read end def test_hex str = "This is longer and will be in hex" @body << str @client << @valid_request - assert_equal "HTTP/1.1 200 OK\r\nx-header: Works\r\nTransfer-Encoding: chunked\r\n\r\n5\r\nHello\r\n#{str.size.to_s(16)}\r\n#{str}\r\n0\r\n\r\n", lines(10) + assert_equal "HTTP/1.1 200 OK\r\nX-Header: Works\r\nTransfer-Encoding: chunked\r\n\r\n5\r\nHello\r\n#{str.size.to_s(16)}\r\n#{str}\r\n0\r\n\r\n", lines(10) end +=begin def test_client11_close @client << @close_request sz = @body[0].size.to_s - assert_equal "HTTP/1.1 200 OK\r\nConnection: close\r\ncontent-length: #{sz}\r\nx-header: Works\r\n\r\n", lines(5) + assert_equal "HTTP/1.1 200 OK\r\nConnection: Close\r\ncontent-length: #{sz}\r\nx-header: Works\r\n\r\n", lines(5) assert_equal "Hello", @client.read(5) end +=end def test_client10_close @client << @http10_request sz = @body[0].size.to_s - assert_equal "HTTP/1.0 200 OK\r\nConnection: close\r\ncontent-length: #{sz}\r\nx-header: Works\r\n\r\n", lines(5) + assert_equal "HTTP/1.0 200 OK\r\nX-Header: Works\r\nContent-Length: #{sz}\r\n\r\n", lines(4) assert_equal "Hello", @client.read(5) end def test_one_with_keep_alive_header @client << @keep_request sz = @body[0].size.to_s - assert_equal "HTTP/1.0 200 OK\r\nConnection: keep-alive\r\ncontent-length: #{sz}\r\nx-header: Works\r\n\r\n", lines(5) + assert_equal "HTTP/1.0 200 OK\r\nX-Header: Works\r\nContent-Length: #{sz}\r\nConnection: Keep-Alive\r\n\r\n", lines(5) assert_equal "Hello", @client.read(5) end +=begin def test_persistent_timeout @server.persistent_timeout = 2 @client << @valid_request sz = @body[0].size.to_s - assert_equal "HTTP/1.1 200 OK\r\ncontent-length: #{sz}\r\nx-header: Works\r\n\r\n", lines(4) + assert_equal "HTTP/1.1 200 OK\r\nX-Header: Works\r\nContent-Length: #{sz}\r\n\r\n", lines(4) assert_equal "Hello", @client.read(5) sleep 3 assert_raises EOFError do @@ -233,6 +241,7 @@ assert_equal c2, out.first.first assert_equal "HTTP/1.1 200 OK\r\ncontent-length: #{sz}\r\nx-header: Works\r\n\r\n", lines(4, c2) assert_equal "Hello", c2.read(5) end +=end end