summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorCory Benfield <lukasaoz@gmail.com>2016-03-30 09:35:05 +0100
committerCory Benfield <lukasaoz@gmail.com>2016-03-30 09:35:05 +0100
commit0ba57ecbf6fe2facbe43a572ee608a79ae1ac556 (patch)
tree0e09dcec2bcd859cc9c832df6583115c041aaf1e /tests
parentef404df8e980888083827f6797cf9d72a3159992 (diff)
downloadpyopenssl-git-0ba57ecbf6fe2facbe43a572ee608a79ae1ac556.tar.gz
Add basic tests for _make_requires
Diffstat (limited to 'tests')
-rw-r--r--tests/test_ssl.py39
1 files changed, 39 insertions, 0 deletions
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 @@ from OpenSSL.SSL import (
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 @@ class InfoConstantTests(TestCase):
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()