def test_feed_data(self, stream): buf = aiohttp.FlowControlDataQueue(stream) dbuf = DeflateBuffer(buf, 'deflate') dbuf.decompressor = mock.Mock() dbuf.decompressor.decompress.return_value = b'line' dbuf.feed_data(b'data', 4) assert [b'line'] == list(d for d, _ in buf._buffer)
def test_feed_data(self, stream): buf = aiohttp.FlowControlDataQueue(stream) dbuf = DeflateBuffer(buf, 'deflate') dbuf.decompressor = mock.Mock() dbuf.decompressor.decompress.return_value = b'line' dbuf.feed_data(b'data', 4) assert [b'line'] == list(d for d, _ in buf._buffer)
def test_feed_eof_err(self): buf = aiohttp.FlowControlDataQueue(self.stream) dbuf = DeflateBuffer(buf, 'deflate') dbuf.decompressor = mock.Mock() dbuf.decompressor.flush.return_value = b'line' dbuf.decompressor.eof = False self.assertRaises(http_exceptions.ContentEncodingError, dbuf.feed_eof)
def test_feed_eof_no_err_brotli(self, stream): buf = aiohttp.FlowControlDataQueue(stream) dbuf = DeflateBuffer(buf, 'br') dbuf.decompressor = mock.Mock() dbuf.decompressor.flush.return_value = b'line' dbuf.decompressor.eof = False dbuf.feed_eof() assert [b'line'] == list(d for d, _ in buf._buffer)
def test_feed_eof_err_deflate(self, stream): buf = aiohttp.FlowControlDataQueue(stream) dbuf = DeflateBuffer(buf, 'deflate') dbuf.decompressor = mock.Mock() dbuf.decompressor.flush.return_value = b'line' dbuf.decompressor.eof = False with pytest.raises(http_exceptions.ContentEncodingError): dbuf.feed_eof()
def test_feed_data_err(self, stream): buf = aiohttp.FlowControlDataQueue(stream) dbuf = DeflateBuffer(buf, 'deflate') exc = ValueError() dbuf.decompressor = mock.Mock() dbuf.decompressor.decompress.side_effect = exc with pytest.raises(http_exceptions.ContentEncodingError): dbuf.feed_data(b'data', 4)
def test_feed_eof_err(self, stream): buf = aiohttp.FlowControlDataQueue(stream) dbuf = DeflateBuffer(buf, 'deflate') dbuf.decompressor = mock.Mock() dbuf.decompressor.flush.return_value = b'line' dbuf.decompressor.eof = False with pytest.raises(http_exceptions.ContentEncodingError): dbuf.feed_eof()
def test_feed_data_err(self, stream): buf = aiohttp.FlowControlDataQueue(stream) dbuf = DeflateBuffer(buf, 'deflate') exc = ValueError() dbuf.decompressor = mock.Mock() dbuf.decompressor.decompress.side_effect = exc with pytest.raises(http_exceptions.ContentEncodingError): dbuf.feed_data(b'data', 4)
def test_feed_eof(self): buf = aiohttp.FlowControlDataQueue(self.stream) dbuf = DeflateBuffer(buf, 'deflate') dbuf.decompressor = mock.Mock() dbuf.decompressor.flush.return_value = b'line' dbuf.feed_eof() self.assertEqual([b'line'], list(d for d, _ in buf._buffer)) self.assertTrue(buf._eof)
def test_feed_eof_no_err_brotli(self, stream): buf = aiohttp.FlowControlDataQueue(stream) dbuf = DeflateBuffer(buf, 'br') dbuf.decompressor = mock.Mock() dbuf.decompressor.flush.return_value = b'line' dbuf.decompressor.eof = False dbuf.feed_eof() assert [b'line'] == list(d for d, _ in buf._buffer)
async def test_feed_eof_no_err_gzip(self, stream) -> None: buf = aiohttp.FlowControlDataQueue(stream, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, 'gzip') dbuf.decompressor = mock.Mock() dbuf.decompressor.flush.return_value = b'line' dbuf.decompressor.eof = False dbuf.feed_eof() assert [b'line'] == list(d for d, _ in buf._buffer)
async def test_feed_data(self, stream) -> None: buf = aiohttp.FlowControlDataQueue(stream, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, 'deflate') dbuf.decompressor = mock.Mock() dbuf.decompressor.decompress.return_value = b'line' # First byte should be b'x' in order code not to change the decoder. dbuf.feed_data(b'xxxx', 4) assert [b'line'] == list(d for d, _ in buf._buffer)
async def test_feed_eof_no_err_gzip(self, stream) -> None: buf = aiohttp.FlowControlDataQueue(stream, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, 'gzip') dbuf.decompressor = mock.Mock() dbuf.decompressor.flush.return_value = b'line' dbuf.decompressor.eof = False dbuf.feed_eof() assert [b'line'] == list(d for d, _ in buf._buffer)
async def test_feed_eof_no_err_brotli(self, stream: Any) -> None: buf = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, "br") dbuf.decompressor = mock.Mock() dbuf.decompressor.flush.return_value = b"line" dbuf.decompressor.eof = False dbuf.feed_eof() assert [b"line"] == list(d for d, _ in buf._buffer)
async def test_feed_eof_err_deflate(self, stream: Any) -> None: buf = aiohttp.FlowControlDataQueue(stream, 2**16, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, "deflate") dbuf.decompressor = mock.Mock() dbuf.decompressor.flush.return_value = b"line" dbuf.decompressor.eof = False with pytest.raises(http_exceptions.ContentEncodingError): dbuf.feed_eof()
async def test_feed_data_err(self, stream) -> None: buf = aiohttp.FlowControlDataQueue(stream, loop=asyncio.get_event_loop()) dbuf = DeflateBuffer(buf, 'deflate') exc = ValueError() dbuf.decompressor = mock.Mock() dbuf.decompressor.decompress.side_effect = exc with pytest.raises(http_exceptions.ContentEncodingError): # Should be more than 4 bytes to trigger deflate FSM error. # Should start with b'x', otherwise code switch mocked decoder. dbuf.feed_data(b'xsomedata', 9)