diff --git a/OpenSSL/test/test_ssl.py b/OpenSSL/test/test_ssl.py
index 89ac7d1..3616da2 100644
--- a/OpenSSL/test/test_ssl.py
+++ b/OpenSSL/test/test_ssl.py
@@ -372,6 +372,11 @@
         self.assertRaises(TypeError, connection.pending, None)
 
 
+    def test_connect_wrong_args(self):
+        connection = Connection(Context(TLSv1_METHOD), socket())
+        self.assertRaises(TypeError, connection.connect, None)
+
+
     def test_connect_refused(self):
         client = socket()
         context = Context(TLSv1_METHOD)
@@ -400,6 +405,11 @@
             clientSSL.connect_ex(port.getsockname()), EINPROGRESS)
 
 
+    def test_accept_wrong_args(self):
+        connection = Connection(Context(TLSv1_METHOD), socket())
+        self.assertRaises(TypeError, connection.accept, None)
+
+
     def test_accept(self):
         ctx = Context(TLSv1_METHOD)
         ctx.use_privatekey(load_privatekey(FILETYPE_PEM, server_key_pem))
@@ -419,12 +429,24 @@
         self.assertEquals(address, clientSSL.getsockname())
 
 
+    def test_shutdown_wrong_args(self):
+        connection = Connection(Context(TLSv1_METHOD), None)
+        self.assertRaises(TypeError, connection.shutdown, None)
+
+
     def test_shutdown(self):
         server, client = self._loopback()
         server.shutdown()
         self.assertRaises(ZeroReturnError, client.recv, 1024)
 
 
+    def test_app_data_wrong_args(self):
+        conn = Connection(Context(TLSv1_METHOD), None)
+        self.assertRaises(TypeError, conn.get_app_data, None)
+        self.assertRaises(TypeError, conn.set_app_data)
+        self.assertRaises(TypeError, conn.set_app_data, None, None)
+
+
     def test_app_data(self):
         conn = Connection(Context(TLSv1_METHOD), None)
         app_data = object()
@@ -432,6 +454,11 @@
         self.assertIdentical(conn.get_app_data(), app_data)
 
 
+    def test_makefile(self):
+        conn = Connection(Context(TLSv1_METHOD), None)
+        self.assertRaises(NotImplementedError, conn.makefile)
+
+
 
 class ConnectionGetCipherListTests(TestCase):
     def test_wrongargs(self):
@@ -507,6 +534,16 @@
         self.assertRaises(TypeError, connection.renegotiate, None)
 
 
+    def test_total_renegotiations_wrong_args(self):
+        connection = Connection(Context(TLSv1_METHOD), None)
+        self.assertRaises(TypeError, connection.total_renegotiations, None)
+
+
+    def test_total_renegotiations(self):
+        connection = Connection(Context(TLSv1_METHOD), None)
+        self.assertEquals(connection.total_renegotiations(), 0)
+
+
 #     def test_renegotiate(self):
 #         """
 #         """
