diff options
Diffstat (limited to 'tests/test_connection.py')
| -rw-r--r-- | tests/test_connection.py | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/tests/test_connection.py b/tests/test_connection.py index 128bac7..6728e0a 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -1,8 +1,10 @@ from unittest import mock +import types import pytest -from redis.exceptions import InvalidResponse +from redis.exceptions import InvalidResponse, ModuleError from redis.utils import HIREDIS_AVAILABLE +from .conftest import skip_if_server_version_lt @pytest.mark.skipif(HIREDIS_AVAILABLE, reason='PythonParser only') @@ -13,3 +15,32 @@ def test_invalid_response(r): with pytest.raises(InvalidResponse) as cm: parser.read_response() assert str(cm.value) == 'Protocol Error: %r' % raw + + +@skip_if_server_version_lt('4.0.0') +def test_loaded_modules(r, modclient): + assert r.loaded_modules == [] + assert 'rejson' in modclient.loaded_modules + + +@skip_if_server_version_lt('4.0.0') +def test_loading_external_modules(r, modclient): + def inner(): + pass + + with pytest.raises(ModuleError): + r.load_external_module('rejson', 'myfuncname', inner) + + modclient.load_external_module('rejson', 'myfuncname', inner) + assert getattr(modclient, 'myfuncname') == inner + assert isinstance(getattr(modclient, 'myfuncname'), types.FunctionType) + + # and call it + from redis.commands import RedisModuleCommands + j = RedisModuleCommands.json + modclient.load_external_module('rejson', 'sometestfuncname', j) + + d = {'hello': 'world!'} + mod = j(modclient) + mod.set("fookey", ".", d) + assert mod.get('fookey') == d |
