94
94
\r \n \
95
95
Hello World"
96
96
97
+ NO_LENGTH_RESPONSE = b"HTTP/1.1 200 OK\r \n \
98
+ Date: Wed, 1 Jan 2014 00:00:00 GMT\r \n \
99
+ Server: Test Service/1.0.0\r \n \
100
+ \r \n \
101
+ Hello World"
102
+
97
103
98
104
class HTTPParserTest (unittest .TestCase ):
99
105
@@ -103,6 +109,7 @@ def test_simple(self):
103
109
parser .parse (SIMPLE_REQUEST )
104
110
message = parser .get_message ()
105
111
headers = parser .get_headers ()
112
+ self .assertEqual (parser .state , netius .common .http .FINISH_STATE )
106
113
self .assertEqual (parser .method , "get" )
107
114
self .assertEqual (parser .version , netius .common .HTTP_11 )
108
115
self .assertEqual (parser .path_s , "http://localhost" )
@@ -120,6 +127,7 @@ def test_chunked(self):
120
127
parser .parse (CHUNKED_REQUEST )
121
128
message = parser .get_message ()
122
129
headers = parser .get_headers ()
130
+ self .assertEqual (parser .state , netius .common .http .FINISH_STATE )
123
131
self .assertEqual (parser .method , "get" )
124
132
self .assertEqual (parser .version , netius .common .HTTP_11 )
125
133
self .assertEqual (parser .path_s , "http://localhost" )
@@ -137,6 +145,7 @@ def test_malformed(self):
137
145
parser .parse (EXTRA_SPACES_REQUEST )
138
146
message = parser .get_message ()
139
147
headers = parser .get_headers ()
148
+ self .assertEqual (parser .state , netius .common .http .FINISH_STATE )
140
149
self .assertEqual (parser .method , "get" )
141
150
self .assertEqual (parser .version , netius .common .HTTP_11 )
142
151
self .assertEqual (parser .path_s , "/" )
@@ -153,6 +162,7 @@ def test_malformed(self):
153
162
parser .parse (INVALID_HEADERS_REQUEST )
154
163
message = parser .get_message ()
155
164
headers = parser .get_headers ()
165
+ self .assertEqual (parser .state , netius .common .http .FINISH_STATE )
156
166
self .assertEqual (parser .method , "get" )
157
167
self .assertEqual (parser .version , netius .common .HTTP_11 )
158
168
self .assertEqual (parser .path_s , "/" )
@@ -251,6 +261,7 @@ def test_file(self):
251
261
parser .parse (CHUNKED_REQUEST )
252
262
message = parser .get_message ()
253
263
message_b = parser .get_message_b ()
264
+ self .assertEqual (parser .state , netius .common .http .FINISH_STATE )
254
265
self .assertEqual (message , b"Hello World" )
255
266
self .assertNotEqual (parser .message_f , None )
256
267
self .assertNotEqual (parser .message_f .read , None )
@@ -305,3 +316,23 @@ def test_clear(self):
305
316
self .assertEqual (parser .chunk_l , 0 )
306
317
self .assertEqual (parser .chunk_s , 0 )
307
318
self .assertEqual (parser .chunk_e , 0 )
319
+
320
+ def test_no_length_response (self ):
321
+ parser = netius .common .HTTPParser (self , type = netius .common .RESPONSE , store = True )
322
+ try :
323
+ parser .parse (NO_LENGTH_RESPONSE )
324
+ message = parser .get_message ()
325
+ headers = parser .get_headers ()
326
+ self .assertEqual (parser .state , netius .common .http .MESSAGE_STATE )
327
+ self .assertEqual (parser .code , 200 )
328
+ self .assertEqual (parser .status , "OK" )
329
+ self .assertEqual (parser .version , netius .common .HTTP_11 )
330
+ self .assertEqual (parser .content_l , - 1 )
331
+ self .assertEqual (message , b"Hello World" )
332
+ self .assertEqual (headers ["Date" ], "Wed, 1 Jan 2014 00:00:00 GMT" )
333
+ self .assertEqual (headers ["Server" ], "Test Service/1.0.0" )
334
+
335
+ parser .parse_closed ()
336
+ self .assertEqual (parser .state , netius .common .http .FINISH_STATE )
337
+ finally :
338
+ parser .clear ()
0 commit comments