Mercurial > cpython-lru_cache-weakref
comparison Lib/test/test_httpservers.py @ 66351:9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
| author | Senthil Kumaran <orsenthil@gmail.com> |
|---|---|
| date | Sun, 21 Nov 2010 14:36:14 +0000 |
| parents | 211858723b8c |
| children | 9a2058309c1a |
comparison
equal
deleted
inserted
replaced
| 66350:f8ceb6afd7a9 | 66351:9717153d558d |
|---|---|
| 509 self.assertEqual(result[1], b'HTTP/1.1 200 OK\r\n') | 509 self.assertEqual(result[1], b'HTTP/1.1 200 OK\r\n') |
| 510 self.verify_expected_headers(result[2:-1]) | 510 self.verify_expected_headers(result[2:-1]) |
| 511 self.verify_get_called() | 511 self.verify_get_called() |
| 512 self.assertEqual(result[-1], b'<html><body>Data</body></html>\r\n') | 512 self.assertEqual(result[-1], b'<html><body>Data</body></html>\r\n') |
| 513 | 513 |
| 514 def test_header_buffering(self): | |
| 515 | |
| 516 def _readAndReseek(f): | |
| 517 pos = f.tell() | |
| 518 f.seek(0) | |
| 519 data = f.read() | |
| 520 f.seek(pos) | |
| 521 return data | |
| 522 | |
| 523 input = BytesIO(b'GET / HTTP/1.1\r\n\r\n') | |
| 524 output = BytesIO() | |
| 525 self.handler.rfile = input | |
| 526 self.handler.wfile = output | |
| 527 self.handler.request_version = 'HTTP/1.1' | |
| 528 | |
| 529 self.handler.send_header('Foo', 'foo') | |
| 530 self.handler.send_header('bar', 'bar') | |
| 531 self.assertEqual(_readAndReseek(output), b'') | |
| 532 self.handler.end_headers() | |
| 533 self.assertEqual(_readAndReseek(output), | |
| 534 b'Foo: foo\r\nbar: bar\r\n\r\n') | |
| 535 | |
| 536 def test_header_unbuffered_when_continue(self): | |
| 537 | |
| 538 def _readAndReseek(f): | |
| 539 pos = f.tell() | |
| 540 f.seek(0) | |
| 541 data = f.read() | |
| 542 f.seek(pos) | |
| 543 return data | |
| 544 | |
| 545 input = BytesIO(b'GET / HTTP/1.1\r\nExpect: 100-continue\r\n\r\n') | |
| 546 output = BytesIO() | |
| 547 self.handler.rfile = input | |
| 548 self.handler.wfile = output | |
| 549 self.handler.request_version = 'HTTP/1.1' | |
| 550 | |
| 551 self.handler.handle_one_request() | |
| 552 self.assertNotEqual(_readAndReseek(output), b'') | |
| 553 result = _readAndReseek(output).split(b'\r\n') | |
| 554 self.assertEqual(result[0], b'HTTP/1.1 100 Continue') | |
| 555 self.assertEqual(result[1], b'HTTP/1.1 200 OK') | |
| 556 | |
| 514 def test_with_continue_rejected(self): | 557 def test_with_continue_rejected(self): |
| 515 usual_handler = self.handler # Save to avoid breaking any subsequent tests. | 558 usual_handler = self.handler # Save to avoid breaking any subsequent tests. |
| 516 self.handler = RejectingSocketlessRequestHandler() | 559 self.handler = RejectingSocketlessRequestHandler() |
| 517 result = self.send_typical_request(b'GET / HTTP/1.1\r\nExpect: 100-continue\r\n\r\n') | 560 result = self.send_typical_request(b'GET / HTTP/1.1\r\nExpect: 100-continue\r\n\r\n') |
| 518 self.assertEqual(result[0], b'HTTP/1.1 417 Expectation Failed\r\n') | 561 self.assertEqual(result[0], b'HTTP/1.1 417 Expectation Failed\r\n') |
