@@ -616,13 +616,23 @@ def test_http_1_1(self):
616616 self .verify_expected_headers (result [1 :- 1 ])
617617 self .verify_get_called ()
618618 self .assertEqual (result [- 1 ], b'<html><body>Data</body></html>\r \n ' )
619+ self .assertEqual (self .handler .requestline , 'GET / HTTP/1.1' )
620+ self .assertEqual (self .handler .command , 'GET' )
621+ self .assertEqual (self .handler .path , '/' )
622+ self .assertEqual (self .handler .request_version , 'HTTP/1.1' )
623+ self .assertSequenceEqual (self .handler .headers .items (), ())
619624
620625 def test_http_1_0 (self ):
621626 result = self .send_typical_request (b'GET / HTTP/1.0\r \n \r \n ' )
622627 self .verify_http_server_response (result [0 ])
623628 self .verify_expected_headers (result [1 :- 1 ])
624629 self .verify_get_called ()
625630 self .assertEqual (result [- 1 ], b'<html><body>Data</body></html>\r \n ' )
631+ self .assertEqual (self .handler .requestline , 'GET / HTTP/1.0' )
632+ self .assertEqual (self .handler .command , 'GET' )
633+ self .assertEqual (self .handler .path , '/' )
634+ self .assertEqual (self .handler .request_version , 'HTTP/1.0' )
635+ self .assertSequenceEqual (self .handler .headers .items (), ())
626636
627637 def test_http_0_9 (self ):
628638 result = self .send_typical_request (b'GET / HTTP/0.9\r \n \r \n ' )
@@ -636,6 +646,12 @@ def test_with_continue_1_0(self):
636646 self .verify_expected_headers (result [1 :- 1 ])
637647 self .verify_get_called ()
638648 self .assertEqual (result [- 1 ], b'<html><body>Data</body></html>\r \n ' )
649+ self .assertEqual (self .handler .requestline , 'GET / HTTP/1.0' )
650+ self .assertEqual (self .handler .command , 'GET' )
651+ self .assertEqual (self .handler .path , '/' )
652+ self .assertEqual (self .handler .request_version , 'HTTP/1.0' )
653+ headers = (("Expect" , "100-continue" ),)
654+ self .assertSequenceEqual (self .handler .headers .items (), headers )
639655
640656 def test_with_continue_1_1 (self ):
641657 result = self .send_typical_request (b'GET / HTTP/1.1\r \n Expect: 100-continue\r \n \r \n ' )
@@ -645,6 +661,12 @@ def test_with_continue_1_1(self):
645661 self .verify_expected_headers (result [2 :- 1 ])
646662 self .verify_get_called ()
647663 self .assertEqual (result [- 1 ], b'<html><body>Data</body></html>\r \n ' )
664+ self .assertEqual (self .handler .requestline , 'GET / HTTP/1.1' )
665+ self .assertEqual (self .handler .command , 'GET' )
666+ self .assertEqual (self .handler .path , '/' )
667+ self .assertEqual (self .handler .request_version , 'HTTP/1.1' )
668+ headers = (("Expect" , "100-continue" ),)
669+ self .assertSequenceEqual (self .handler .headers .items (), headers )
648670
649671 def test_header_buffering_of_send_error (self ):
650672
@@ -730,13 +752,30 @@ def test_request_length(self):
730752 result = self .send_typical_request (b'GET ' + b'x' * 65537 )
731753 self .assertEqual (result [0 ], b'HTTP/1.1 414 Request-URI Too Long\r \n ' )
732754 self .assertFalse (self .handler .get_called )
755+ self .assertIsInstance (self .handler .requestline , str )
733756
734757 def test_header_length (self ):
735758 # Issue #6791: same for headers
736759 result = self .send_typical_request (
737760 b'GET / HTTP/1.1\r \n X-Foo: bar' + b'r' * 65537 + b'\r \n \r \n ' )
738761 self .assertEqual (result [0 ], b'HTTP/1.1 400 Line too long\r \n ' )
739762 self .assertFalse (self .handler .get_called )
763+ self .assertEqual (self .handler .requestline , 'GET / HTTP/1.1' )
764+
765+ def test_close_connection (self ):
766+ # handle_one_request() should be repeatedly called until
767+ # it sets close_connection
768+ def handle_one_request ():
769+ self .handler .close_connection = next (close_values )
770+ self .handler .handle_one_request = handle_one_request
771+
772+ close_values = iter ((True ,))
773+ self .handler .handle ()
774+ self .assertRaises (StopIteration , next , close_values )
775+
776+ close_values = iter ((False , False , True ))
777+ self .handler .handle ()
778+ self .assertRaises (StopIteration , next , close_values )
740779
741780class SimpleHTTPRequestHandlerTestCase (unittest .TestCase ):
742781 """ Test url parsing """
0 commit comments