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)))
 
 
 
