def test_waituntil_limit(self): buf = self._make_one() p = buf.waituntil(b'\n', 4) next(p) p.send(b'1') p.send(b'234') self.assertRaises(ValueError, p.send, b'5') buf = parsers.ParserBuffer() p = buf.waituntil(b'\n', 4) next(p) self.assertRaises(ValueError, p.send, b'12345\n6') buf = parsers.ParserBuffer() p = buf.waituntil(b'\n', 4) next(p) self.assertRaises(ValueError, p.send, b'12345\n6') class CustomExc(Exception): pass buf = parsers.ParserBuffer() p = buf.waituntil(b'\n', 4, CustomExc) next(p) self.assertRaises(CustomExc, p.send, b'12345\n6')
def create_request(raw_request_lines): """ :param raw_request_lines: HTTP Request lines without line ends :type raw_request_lines: list(str) :rtype: Request """ class ParserOut: """ :param message: :type message: protocol.RawRequestMessage """ def feed_data(po, m, _): po.message = m def feed_eof(po, *args): pass raw_request = "\r\n".join(raw_request_lines + ["\r\n"]).encode("utf-8") po = ParserOut() p = protocol.HttpRequestParser() asyncio.get_event_loop() \ .run_until_complete(p(po, parsers.ParserBuffer(raw_request))) return Request(None, po.message, streams.EmptyStreamReader(), None, None, None)
def test_waituntil_limit(self): buf = self._make_one() p = buf.waituntil(b'\n', 4) next(p) p.send(b'1') p.send(b'234') self.assertRaises(errors.LineLimitExceededParserError, p.send, b'5') buf = parsers.ParserBuffer() p = buf.waituntil(b'\n', 4) next(p) self.assertRaises( errors.LineLimitExceededParserError, p.send, b'12345\n6') buf = parsers.ParserBuffer() p = buf.waituntil(b'\n', 4) next(p) self.assertRaises( errors.LineLimitExceededParserError, p.send, b'12345\n6')
def test_shrink(self): buf = parsers.ParserBuffer() buf.feed_data(b'data') buf._shrink() self.assertEqual(bytes(buf), b'data') buf.offset = 2 buf._shrink() self.assertEqual(bytes(buf), b'ta') self.assertEqual(2, len(buf)) self.assertEqual(2, buf.size) self.assertEqual(0, buf.offset)
def buf(): return parsers.ParserBuffer()
def _make_one(self): return parsers.ParserBuffer()