Do that refactoring for a third test method.
diff --git a/OpenSSL/test/test_ssl.py b/OpenSSL/test/test_ssl.py
index 0857b14..d70f1bf 100644
--- a/OpenSSL/test/test_ssl.py
+++ b/OpenSSL/test/test_ssl.py
@@ -2266,17 +2266,29 @@
self._respects_length_test(bytearray(10))
- def test_recv_into_doesnt_overfill(self):
+ def _doesnt_overfill_test(self, output_buffer):
"""
- Test that :py:obj:`Connection.recv_into` doesn't overfill an object
- implementing the buffer protocol.
+ Assert that if there are more bytes available to be read from the
+ receive buffer than would fit into the buffer passed to
+ :py:obj:`Connection.recv_into`, only as many as fit are written into
+ it.
"""
server, client = self._loopback()
server.send(b('abcdefghij'))
- buffer = bytearray(5)
- self.assertEquals(client.recv_into(buffer), 5)
- self.assertEquals(buffer, bytearray(b('abcde')))
+ self.assertEquals(client.recv_into(output_buffer), 5)
+ self.assertEquals(output_buffer, bytearray(b('abcde')))
+ rest = client.recv(5)
+ self.assertEqual(b('fghij'), rest)
+
+
+ def test_buffer_doesnt_overfill(self):
+ """
+ When called with a ``bytearray`` instance,
+ :py:obj:`Connection.recv_into` respects the size of the array and
+ doesn't write more bytes into it than will fit.
+ """
+ self._doesnt_overfill_test(bytearray(5))
try:
@@ -2301,18 +2313,12 @@
self._respects_length_test(memoryview(bytearray(10)))
- def test_recv_into_memoryview_doesnt_overfill(self):
+ def test_memoryview_doesnt_overfill(self):
"""
Test that :py:obj:`Connection.recv_into` doesn't overfill a
memoryview.
"""
- server, client = self._loopback()
- server.send(b('abcdefghij'))
- buffer = bytearray(5)
- mv = memoryview(buffer)
-
- self.assertEquals(client.recv_into(mv), 5)
- self.assertEquals(buffer, bytearray(b('abcde')))
+ self._doesnt_overfill_test(memoryview(bytearray(5)))