Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_recv_empty(self):
stream = QuicStream(stream_id=0)
self.assertEqual(bytes(stream._recv_buffer), b"")
self.assertEqual(list(stream._recv_ranges), [])
self.assertEqual(stream._recv_buffer_start, 0)
# empty
self.assertEqual(stream.add_frame(QuicStreamFrame(offset=0, data=b"")), None)
self.assertEqual(bytes(stream._recv_buffer), b"")
self.assertEqual(list(stream._recv_ranges), [])
self.assertEqual(stream._recv_buffer_start, 0)
def test_recv_fin_without_data(self):
stream = QuicStream(stream_id=0)
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=0, data=b"", fin=True)),
StreamDataReceived(data=b"", end_stream=True, stream_id=0),
)
def test_recv_already_partially_consumed(self):
stream = QuicStream(stream_id=0)
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=0, data=b"01234567")),
StreamDataReceived(data=b"01234567", end_stream=False, stream_id=0),
)
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=0, data=b"0123456789012345")),
StreamDataReceived(data=b"89012345", end_stream=False, stream_id=0),
)
self.assertEqual(bytes(stream._recv_buffer), b"")
self.assertEqual(list(stream._recv_ranges), [])
self.assertEqual(stream._recv_buffer_start, 16)
def test_recv_fin(self):
stream = QuicStream(stream_id=0)
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=0, data=b"01234567")),
StreamDataReceived(data=b"01234567", end_stream=False, stream_id=0),
)
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=8, data=b"89012345", fin=True)),
StreamDataReceived(data=b"89012345", end_stream=True, stream_id=0),
)
def test_recv_fin_twice(self):
stream = QuicStream(stream_id=0)
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=0, data=b"01234567")),
StreamDataReceived(data=b"01234567", end_stream=False, stream_id=0),
)
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=8, data=b"89012345", fin=True)),
StreamDataReceived(data=b"89012345", end_stream=True, stream_id=0),
)
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=8, data=b"89012345", fin=True)),
StreamDataReceived(data=b"", end_stream=True, stream_id=0),
)
def test_recv_ordered(self):
stream = QuicStream(stream_id=0)
# add data at start
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=0, data=b"01234567")),
StreamDataReceived(data=b"01234567", end_stream=False, stream_id=0),
)
self.assertEqual(bytes(stream._recv_buffer), b"")
self.assertEqual(list(stream._recv_ranges), [])
self.assertEqual(stream._recv_buffer_start, 8)
# add more data
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=8, data=b"89012345")),
StreamDataReceived(data=b"89012345", end_stream=False, stream_id=0),
)
self.assertEqual(bytes(stream._recv_buffer), b"")
self.assertEqual(list(stream._recv_ranges), [])
self.assertEqual(stream._recv_buffer_start, 16)
# add data and fin
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=16, data=b"67890123", fin=True)),
StreamDataReceived(data=b"67890123", end_stream=True, stream_id=0),
)
self.assertEqual(bytes(stream._recv_buffer), b"")
self.assertEqual(list(stream._recv_ranges), [])
self.assertEqual(stream._recv_buffer_start, 24)
def test_recv_fin_then_data(self):
stream = QuicStream(stream_id=0)
stream.add_frame(QuicStreamFrame(offset=0, data=b"", fin=True))
with self.assertRaises(Exception) as cm:
stream.add_frame(QuicStreamFrame(offset=0, data=b"01234567"))
self.assertEqual(str(cm.exception), "Data received beyond FIN")
def test_recv_already_fully_consumed(self):
stream = QuicStream(stream_id=0)
# add data at offset 0
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=0, data=b"01234567")),
StreamDataReceived(data=b"01234567", end_stream=False, stream_id=0),
)
self.assertEqual(bytes(stream._recv_buffer), b"")
self.assertEqual(list(stream._recv_ranges), [])
self.assertEqual(stream._recv_buffer_start, 8)
# add data again at offset 0
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=0, data=b"01234567")), None
)
self.assertEqual(bytes(stream._recv_buffer), b"")
self.assertEqual(list(stream._recv_ranges), [])
self.assertEqual(stream._recv_buffer_start, 8)
def test_recv_fin_out_of_order(self):
stream = QuicStream(stream_id=0)
# add data at offset 8 with FIN
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=8, data=b"89012345", fin=True)),
None,
)
# add data at offset 0
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=0, data=b"01234567")),
StreamDataReceived(data=b"0123456789012345", end_stream=True, stream_id=0),
)
def test_recv_fin_twice(self):
stream = QuicStream(stream_id=0)
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=0, data=b"01234567")),
StreamDataReceived(data=b"01234567", end_stream=False, stream_id=0),
)
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=8, data=b"89012345", fin=True)),
StreamDataReceived(data=b"89012345", end_stream=True, stream_id=0),
)
self.assertEqual(
stream.add_frame(QuicStreamFrame(offset=8, data=b"89012345", fin=True)),
StreamDataReceived(data=b"", end_stream=True, stream_id=0),
)