diff options
author | Chris McDonough <chrism@plope.com> | 2011-12-29 23:55:08 -0500 |
---|---|---|
committer | Chris McDonough <chrism@plope.com> | 2011-12-29 23:55:08 -0500 |
commit | 40c5806fafb5d60148eed843a1a65075c5a50bca (patch) | |
tree | af7f8cbcd5fed5be13e4adcabdb73a78402e4e9e | |
parent | 900c174b55c6aa0387ed60574c441fe4f206b6c4 (diff) | |
download | waitress-40c5806fafb5d60148eed843a1a65075c5a50bca.tar.gz |
normalize writecb tests
-rw-r--r-- | waitress/tests/test_functional.py | 59 |
1 files changed, 18 insertions, 41 deletions
diff --git a/waitress/tests/test_functional.py b/waitress/tests/test_functional.py index 1e51742..b852019 100644 --- a/waitress/tests/test_functional.py +++ b/waitress/tests/test_functional.py @@ -447,20 +447,16 @@ class WriteCallbackTests(SubprocessTests, unittest.TestCase): self.sock.connect((self.host, self.port)) self.sock.send(to_send) fp = self.sock.makefile('rb', 0) - line = fp.readline() # status line - version, status, reason = (x.strip() for x in line.split(None, 2)) - headers = parse_headers(fp) - content_length = int(headers.get('content-length')) or None - self.assertEqual(content_length, 9) - response_body = fp.read(content_length) - self.assertEqual(int(status), 200) - self.assertNotEqual(content_length, len(response_body)) - self.assertEqual(len(response_body), content_length-1) + line, headers, response_body = read_http(fp) + # server trusts the content-length header (5) + self.assertline(line, '200', 'OK', 'HTTP/1.0') + cl = int(headers['content-length']) + self.assertEqual(cl, 9) + self.assertNotEqual(cl, len(response_body)) + self.assertEqual(len(response_body), cl-1) self.assertEqual(response_body, tobytes('abcdefgh')) - # remote closed connection (despite keepalive header); not sure why - # first send succeeds - self.sock.send(to_send[:5]) - self.assertRaises(socket.error, self.sock.send, to_send[5:]) + # remote closed connection (despite keepalive header) + self.assertRaises(ConnectionClosed, read_http, fp) def test_long_body(self): # check server doesnt close connection when body is too long @@ -474,24 +470,16 @@ class WriteCallbackTests(SubprocessTests, unittest.TestCase): self.sock.connect((self.host, self.port)) self.sock.send(to_send) fp = self.sock.makefile('rb', 0) - line = fp.readline() # status line - version, status, reason = (x.strip() for x in line.split(None, 2)) - headers = parse_headers(fp) + line, headers, response_body = read_http(fp) content_length = int(headers.get('content-length')) or None self.assertEqual(content_length, 9) - response_body = fp.read(content_length) - self.assertEqual(int(status), 200) self.assertEqual(content_length, len(response_body)) self.assertEqual(response_body, tobytes('abcdefghi')) # remote does not close connection (keepalive header) self.sock.send(to_send) fp = self.sock.makefile('rb', 0) - line = fp.readline() # status line - version, status, reason = (x.strip() for x in line.split(None, 2)) - headers = parse_headers(fp) - content_length = int(headers.get('content-length')) or None - response_body = fp.read(content_length) - self.assertEqual(int(status), 200) + line, headers, response_body = read_http(fp) + self.assertline(line, '200', 'OK', 'HTTP/1.0') def test_equal_body(self): # check server doesnt close connection when body is equal to @@ -505,24 +493,17 @@ class WriteCallbackTests(SubprocessTests, unittest.TestCase): self.sock.connect((self.host, self.port)) self.sock.send(to_send) fp = self.sock.makefile('rb', 0) - line = fp.readline() # status line - version, status, reason = (x.strip() for x in line.split(None, 2)) - headers = parse_headers(fp) + line, headers, response_body = read_http(fp) content_length = int(headers.get('content-length')) or None self.assertEqual(content_length, 9) - response_body = fp.read(content_length) - self.assertEqual(int(status), 200) + self.assertline(line, '200', 'OK', 'HTTP/1.0') self.assertEqual(content_length, len(response_body)) self.assertEqual(response_body, tobytes('abcdefghi')) # remote does not close connection (keepalive header) self.sock.send(to_send) fp = self.sock.makefile('rb', 0) - line = fp.readline() # status line - version, status, reason = (x.strip() for x in line.split(None, 2)) - headers = parse_headers(fp) - content_length = int(headers.get('content-length')) or None - response_body = fp.read(content_length) - self.assertEqual(int(status), 200) + line, headers, response_body = read_http(fp) + self.assertline(line, '200', 'OK', 'HTTP/1.0') def test_no_content_length(self): # wtf happens when there's no content-length @@ -536,17 +517,13 @@ class WriteCallbackTests(SubprocessTests, unittest.TestCase): self.sock.send(to_send) fp = self.sock.makefile('rb', 0) line = fp.readline() # status line - version, status, reason = (x.strip() for x in line.split(None, 2)) - headers = parse_headers(fp) + line, headers, response_body = read_http(fp) content_length = headers.get('content-length') self.assertEqual(content_length, None) - response_body = fp.read() - self.assertEqual(int(status), 200) self.assertEqual(response_body, tobytes('abcdefghi')) # remote closed connection (despite keepalive header); not sure why # first send succeeds - self.sock.send(to_send[:5]) - self.assertRaises(socket.error, self.sock.send, to_send[5:]) + self.assertRaises(ConnectionClosed, read_http, fp) class TooLargeTests(SubprocessTests, unittest.TestCase): |