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))
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])
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')
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', 'тест')]))
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))
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))
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, '')
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', 'тест')]))
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())
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')
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))
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, '')
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])
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'))
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'))
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())