Beispiel #1
0
 def test_http_response_parser_code_not_int(self):
     out = aiohttp.FlowControlDataQueue(self.stream)
     buf = aiohttp.ParserBuffer()
     p = protocol.HttpResponseParser()(out, buf)
     next(p)
     with self.assertRaises(errors.BadStatusLine) as cm:
         p.send(b'HTTP/1.1 ttt test\r\n\r\n')
     self.assertIn('HTTP/1.1 ttt test', str(cm.exception))
Beispiel #2
0
 def test_http_response_parser_bad_version(self):
     out = aiohttp.FlowControlDataQueue(self.stream)
     buf = aiohttp.ParserBuffer()
     p = protocol.HttpResponseParser()(out, buf)
     next(p)
     with self.assertRaises(errors.BadStatusLine) as cm:
         p.send(b'HT/11 200 Ok\r\n\r\n')
     self.assertEqual('HT/11 200 Ok', cm.exception.args[0])
Beispiel #3
0
 def test_http_response_parser_bad_status_line_too_long(self):
     out = aiohttp.FlowControlDataQueue(self.stream)
     buf = aiohttp.ParserBuffer()
     p = protocol.HttpResponseParser(max_headers=2, max_line_size=2)(out,
                                                                     buf)
     next(p)
     self.assertRaises(errors.LineTooLong, p.send,
                       b'HTTP/1.1 200 Ok\r\n\r\n')
Beispiel #4
0
 def test_http_response_parser_utf8(self):
     p = protocol.HttpResponseParser()
     msg = 'HTTP/1.1 200 Ok\r\nx-test:тест\r\n\r\n'.encode('utf-8')
     result = p.parse_message(msg.split(b'\r\n'))
     self.assertEqual(result.version, (1, 1))
     self.assertEqual(result.code, 200)
     self.assertEqual(result.reason, 'Ok')
     self.assertEqual(result.headers, CIMultiDict([('X-TEST', 'тест')]))
Beispiel #5
0
 def test_http_response_parser_code_above_999(self):
     out = aiohttp.DataQueue()
     buf = aiohttp.ParserBuffer()
     p = protocol.HttpResponseParser()(out, buf)
     next(p)
     with self.assertRaises(errors.BadStatusLine) as cm:
         p.send(b'HTTP/1.1 9999 test\r\n\r\n')
     self.assertIn('HTTP/1.1 9999 test', str(cm.exception))
Beispiel #6
0
 def test_http_response_parser_bad(self):
     out = aiohttp.DataQueue(self.stream)
     buf = aiohttp.ParserBuffer()
     p = protocol.HttpResponseParser()(out, buf)
     next(p)
     with self.assertRaises(errors.BadStatusLine) as cm:
         p.send(b'HTT/1\r\n\r\n')
     self.assertIn('HTT/1', str(cm.exception))
Beispiel #7
0
 def test_http_response_parser_no_reason(self):
     out = aiohttp.FlowControlDataQueue(self.stream)
     buf = aiohttp.ParserBuffer()
     p = protocol.HttpResponseParser()(out, buf)
     next(p)
     try:
         p.send(b'HTTP/1.1 200\r\n\r\n')
     except StopIteration:
         pass
     v, s, r = out._buffer[0][0][:3]
     self.assertEqual(v, (1, 1))
     self.assertEqual(s, 200)
     self.assertEqual(r, '')
Beispiel #8
0
 def test_http_response_parser_utf8(self):
     out = aiohttp.FlowControlDataQueue(self.stream)
     buf = aiohttp.ParserBuffer()
     p = protocol.HttpResponseParser()(out, buf)
     next(p)
     msg = 'HTTP/1.1 200 Ok\r\nx-test:тест\r\n\r\n'.encode('utf-8')
     try:
         p.send(msg)
     except StopIteration:
         pass
     v, s, r, h = out._buffer[0][0][:4]
     self.assertEqual(v, (1, 1))
     self.assertEqual(s, 200)
     self.assertEqual(r, 'Ok')
     self.assertEqual(h, CIMultiDict([('X-TEST', 'тест')]))
Beispiel #9
0
 def test_http_response_parser_bad_status_line_eof(self):
     out = aiohttp.FlowControlDataQueue(self.stream)
     buf = aiohttp.ParserBuffer()
     p = protocol.HttpResponseParser()(out, buf)
     next(p)
     self.assertRaises(aiohttp.EofStream, p.throw, aiohttp.EofStream())
Beispiel #10
0
 def test_http_response_parser_bad_status_line(self):
     out = aiohttp.FlowControlDataQueue(self.stream)
     buf = aiohttp.ParserBuffer()
     p = protocol.HttpResponseParser()(out, buf)
     next(p)
     self.assertRaises(errors.BadStatusLine, p.send, b'\r\n\r\n')
Beispiel #11
0
 def test_http_response_parser_code_not_int(self):
     p = protocol.HttpResponseParser()
     with self.assertRaises(errors.BadStatusLine) as cm:
         p.parse_message(b'HTTP/1.1 ttt test\r\n\r\n'.split(b'\r\n'))
     self.assertIn('HTTP/1.1 ttt test', str(cm.exception))
Beispiel #12
0
 def test_http_response_parser_no_reason(self):
     p = protocol.HttpResponseParser()
     result = p.parse_message(b'HTTP/1.1 200\r\n\r\n'.split(b'\r\n'))
     self.assertEqual(result.version, (1, 1))
     self.assertEqual(result.code, 200)
     self.assertEqual(result.reason, '')
Beispiel #13
0
 def test_http_response_parser_bad_version(self):
     p = protocol.HttpResponseParser()
     with self.assertRaises(errors.BadStatusLine) as cm:
         p.parse_message(b'HT/11 200 Ok\r\n\r\n'.split(b'\r\n'))
     self.assertEqual('HT/11 200 Ok', cm.exception.args[0])
Beispiel #14
0
 def _test_http_response_parser_bad_status_line_too_long(self):
     p = protocol.HttpResponseParser(max_headers=2, max_line_size=2)
     self.assertRaises(errors.LineTooLong, p.parse_message,
                       b'HTTP/1.1 200 Ok\r\n\r\n'.split(b'\r\n'))
Beispiel #15
0
 def test_http_response_parser_bad_status_line(self):
     p = protocol.HttpResponseParser()
     self.assertRaises(errors.BadStatusLine, p.parse_message,
                       b'\r\n\r\n'.split(b'\r\n'))
Beispiel #16
0
 def test_http_response_parser_bad_status_line_eof(self):
     out = aiohttp.DataQueue()
     buf = aiohttp.ParserBuffer()
     p = protocol.HttpResponseParser()(out, buf)
     next(p)
     self.assertRaises(errors.BadStatusLine, p.throw, aiohttp.EofStream())