Add basic tests for _make_requires
diff --git a/tests/test_ssl.py b/tests/test_ssl.py
index ab316fc..7b69902 100644
--- a/tests/test_ssl.py
+++ b/tests/test_ssl.py
@@ -55,6 +55,7 @@
     Error, SysCallError, WantReadError, WantWriteError, ZeroReturnError)
 from OpenSSL.SSL import (
     Context, ContextType, Session, Connection, ConnectionType, SSLeay_version)
+from OpenSSL.SSL import _make_requires
 
 from OpenSSL._util import lib as _lib
 
@@ -3855,5 +3856,43 @@
             self.assertTrue(isinstance(const, int))
 
 
+class TestRequires(TestCase):
+    """
+    Tests for the decorator factory used to conditionally raise
+    NotImplementedError when older OpenSSL's are used.
+    """
+    def test_available(self):
+        """
+        When the OpenSSL functionality is available the decorated functions
+        work appropriately.
+        """
+        feature_guard = _make_requires(True, "Error text")
+        results = []
+
+        @feature_guard
+        def inner():
+            results.append(True)
+            return True
+
+        self.assertTrue(inner())
+        self.assertEqual(results, [True])
+
+    def test_unavailable(self):
+        """
+        When the OpenSSL functionality is not available the decorated function
+        does not execute and NotImplementedError is raised.
+        """
+        feature_guard = _make_requires(False, "Error text")
+        results = []
+
+        @feature_guard
+        def inner():
+            results.append(True)
+            return True
+
+        self.assertRaises(NotImplementedError, inner)
+        self.assertFalse(results)
+
+
 if __name__ == '__main__':
     main()