diff --git a/test/test_crypto.py b/test/test_crypto.py
index aa22cd0..d9317fd 100644
--- a/test/test_crypto.py
+++ b/test/test_crypto.py
@@ -191,6 +191,9 @@
             isinstance(comment, X509ExtensionType),
             "%r is of type %r, should be %r" % (
                 comment, type(comment), X509ExtensionType))
+        self.assertEqual(type(X509ExtensionType).__name__, 'type')
+        self.assertEqual(type(basic).__name__, 'X509Extension')
+        self.assertEqual(type(basic), X509ExtensionType)
 
 
     def test_invalid_extension(self):
@@ -248,6 +251,9 @@
         self.assertTrue(
             isinstance(key, PKeyType),
             "%r is of type %r, should be %r" % (key, type(key), PKeyType))
+        self.assertEqual(type(PKeyType).__name__, 'type')
+        self.assertEqual(type(key).__name__, 'PKey')
+        self.assertEqual(type(key), PKeyType)
 
 
     def test_pregeneration(self):
@@ -350,6 +356,21 @@
         return name
 
 
+    def test_type(self):
+        """
+        L{X509NameType} is a type, and matches the type of a
+        X509Name.
+        """
+        name = self._x509name()
+        self.assertTrue(
+            isinstance(name, X509NameType),
+            "%r is of type %r, should be %r" % (
+                name, type(name), X509NameType))
+        self.assertEqual(type(X509NameType).__name__, 'type')
+        self.assertEqual(type(name).__name__, 'X509Name')
+        self.assertEqual(type(name), X509NameType)
+
+
     def test_attributes(self):
         """
         L{X509NameType} instances have attributes for each standard (?)
@@ -558,7 +579,11 @@
         """
         Create and return a new L{X509Req}.
         """
-        return X509Req()
+        req = X509Req()
+        self.assertEqual(type(X509ReqType).__name__, 'type')
+        self.assertEqual(type(req).__name__, 'X509Req')
+        self.assertEqual(type(req), X509ReqType)
+        return req
 
 
     def test_construction(self):
@@ -627,6 +652,9 @@
             "%r is of type %r, should be %r" % (certificate,
                                                 type(certificate),
                                                 X509Type))
+        self.assertEqual(type(X509Type).__name__, 'type')
+        self.assertEqual(type(certificate).__name__, 'X509')
+        self.assertEqual(type(certificate), X509Type)
 
 
     def test_serial_number(self):
@@ -895,6 +923,9 @@
         """
         pkcs7 = load_pkcs7_data(FILETYPE_PEM, pkcs7Data)
         self.assertTrue(isinstance(pkcs7, PKCS7Type))
+        self.assertEqual(type(PKCS7Type).__name__, 'type')
+        self.assertEqual(type(pkcs7).__name__, 'PKCS7')
+        self.assertEqual(type(pkcs7), PKCS7Type)
 
 
     def test_load_pkcs12(self):
@@ -904,6 +935,9 @@
         """
         pkcs12 = load_pkcs12(pkcs12Data)
         self.assertTrue(isinstance(pkcs12, PKCS12Type))
+        self.assertEqual(type(PKCS12Type).__name__, 'type')
+        self.assertEqual(type(pkcs12).__name__, 'PKCS12')
+        self.assertEqual(type(pkcs12), PKCS12Type)
 
 
 
@@ -917,6 +951,9 @@
         """
         nspki = NetscapeSPKI()
         self.assertTrue(isinstance(nspki, NetscapeSPKIType))
+        self.assertEqual(type(NetscapeSPKIType).__name__, 'type')
+        self.assertEqual(type(nspki).__name__, 'NetscapeSPKI')
+        self.assertEqual(type(nspki), NetscapeSPKIType)
 
 
 
diff --git a/test/test_ssl.py b/test/test_ssl.py
index a51cfc4..831af1a 100644
--- a/test/test_ssl.py
+++ b/test/test_ssl.py
@@ -11,7 +11,7 @@
 from unittest import main
 
 from OpenSSL.crypto import TYPE_RSA, FILETYPE_PEM, PKey, dump_privatekey, load_certificate, load_privatekey
-from OpenSSL.SSL import WantReadError, Context, Connection, Error
+from OpenSSL.SSL import WantReadError, Context, ContextType, Connection, ConnectionType, Error
 from OpenSSL.SSL import SSLv2_METHOD, SSLv3_METHOD, SSLv23_METHOD, TLSv1_METHOD
 from OpenSSL.SSL import OP_NO_SSLv2, OP_NO_SSLv3, OP_SINGLE_DH_USE 
 from OpenSSL.SSL import VERIFY_PEER, VERIFY_FAIL_IF_NO_PEER_CERT, VERIFY_CLIENT_ONCE
@@ -46,6 +46,17 @@
         self.assertRaises(ValueError, Context, 10)
 
 
+    def test_type(self):
+        """
+        L{Context} must be of type L{ContextType}.
+        """
+        ctx = Context(TLSv1_METHOD)
+        self.assertTrue(isinstance(ctx, ContextType))
+        self.assertEqual(type(ContextType).__name__, 'type')
+        self.assertEqual(type(ctx).__name__, 'Context')
+        self.assertEqual(type(ctx), ContextType)
+
+
     def test_use_privatekey(self):
         """
         L{Context.use_privatekey} takes an L{OpenSSL.crypto.PKey} instance.
@@ -259,6 +270,26 @@
 
 
 
+class ConnectionTests(TestCase):
+    """
+    Unit tests for L{OpenSSL.SSL.Connection}.
+    """
+    def test_type(self):
+        """
+        L{Connection} must be of type L{ConnectionType}.
+        """
+        ctx = Context(TLSv1_METHOD)
+        conn = Connection(ctx, None)
+        self.assertTrue(isinstance(conn, ConnectionType))
+        self.assertEqual(type(ConnectionType).__name__, 'type')
+        self.assertEqual(type(conn).__name__, 'Connection')
+        self.assertEqual(type(conn), ConnectionType)
+
+        self.assertEqual(Error.__name__, 'Error')
+        self.assertEqual(type(Error).__name__, 'type')
+
+
+
 class ConstantsTests(TestCase):
     """
     Tests for the values of constants exposed in L{OpenSSL.SSL}.
