diff options
author | Cory Benfield <lukasaoz@gmail.com> | 2016-03-30 09:35:05 +0100 |
---|---|---|
committer | Cory Benfield <lukasaoz@gmail.com> | 2016-03-30 09:35:05 +0100 |
commit | 0ba57ecbf6fe2facbe43a572ee608a79ae1ac556 (patch) | |
tree | 0e09dcec2bcd859cc9c832df6583115c041aaf1e /tests | |
parent | ef404df8e980888083827f6797cf9d72a3159992 (diff) | |
download | pyopenssl-git-0ba57ecbf6fe2facbe43a572ee608a79ae1ac556.tar.gz |
Add basic tests for _make_requires
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_ssl.py | 39 |
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() |