From e646369697f9de02b904c6492cc523305108a244 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Mon, 30 Dec 2013 08:28:18 -0600 Subject: add urandom engine register/unregister tests also rename some variables in the urandom engine for easier comparison --- tests/hazmat/backends/test_openssl.py | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'tests') diff --git a/tests/hazmat/backends/test_openssl.py b/tests/hazmat/backends/test_openssl.py index 543a05fe..4dd74c35 100644 --- a/tests/hazmat/backends/test_openssl.py +++ b/tests/hazmat/backends/test_openssl.py @@ -97,3 +97,61 @@ class TestOpenSSL(object): backend.lib.EVP_F_EVP_DECRYPTFINAL_EX, 0 ) + + # This test is not in the next class because to check if it's really + # default we don't want to run the setup_method before it + def test_urandom_engine_is_default(self): + e = backend.lib.ENGINE_get_default_RAND() + name = backend.lib.ENGINE_get_name(e) + assert name == backend.lib.Cryptography_urandom_engine_name + res = backend.lib.ENGINE_free(e) + assert res == 1 + + +class TestOpenSSLRandomEngine(object): + def setup_method(self, method): + # we need to reset state to being default. backend is a shared global + # for all these tests. + backend.register_urandom_engine() + pass + + def test_register_urandom_already_default(self): + e = backend.lib.ENGINE_get_default_RAND() + name = backend.lib.ENGINE_get_name(e) + assert name == backend.lib.Cryptography_urandom_engine_name + res = backend.lib.ENGINE_free(e) + assert res == 1 + backend.register_urandom_engine() + e = backend.lib.ENGINE_get_default_RAND() + name = backend.lib.ENGINE_get_name(e) + assert name == backend.lib.Cryptography_urandom_engine_name + res = backend.lib.ENGINE_free(e) + assert res == 1 + + def test_unregister_urandom_engine_already_unregistered(self): + backend.unregister_urandom_engine() + e = backend.lib.ENGINE_get_default_RAND() + assert e == backend.ffi.NULL + backend.unregister_urandom_engine() + e = backend.lib.ENGINE_get_default_RAND() + assert e == backend.ffi.NULL + + def test_unregister_urandom_engine(self): + e = backend.lib.ENGINE_get_default_RAND() + assert e != backend.ffi.NULL + name = backend.lib.ENGINE_get_name(e) + assert name == backend.lib.Cryptography_urandom_engine_name + backend.unregister_urandom_engine() + e = backend.lib.ENGINE_get_default_RAND() + assert e == backend.ffi.NULL + + def test_register_urandom_not_default(self): + backend.unregister_urandom_engine() + e = backend.lib.ENGINE_get_default_RAND() + assert e == backend.ffi.NULL + backend.register_urandom_engine() + e = backend.lib.ENGINE_get_default_RAND() + name = backend.lib.ENGINE_get_name(e) + assert name == backend.lib.Cryptography_urandom_engine_name + res = backend.lib.ENGINE_free(e) + assert res == 1 -- cgit v1.2.3