diff options
| author | shacharPash <shachar.pashchur@redis.com> | 2023-03-22 17:09:06 +0200 |
|---|---|---|
| committer | shacharPash <shachar.pashchur@redis.com> | 2023-03-22 17:09:06 +0200 |
| commit | 5df8078b8dc20bd7fb7316dbf5e8dc54c43021eb (patch) | |
| tree | a07647543f91902cd588c9cfc8b72da7ebb89aee | |
| parent | a06b710eff650a17cabaff2b0abdb64859983a39 (diff) | |
| download | redis-py-5df8078b8dc20bd7fb7316dbf5e8dc54c43021eb.tar.gz | |
async test_acl_dryrun
| -rw-r--r-- | tests/test_asyncio/test_commands.py | 120 |
1 files changed, 66 insertions, 54 deletions
diff --git a/tests/test_asyncio/test_commands.py b/tests/test_asyncio/test_commands.py index f7070e2..e2b9ad6 100644 --- a/tests/test_asyncio/test_commands.py +++ b/tests/test_asyncio/test_commands.py @@ -83,60 +83,60 @@ class TestResponseCallbacks: class TestRedisCommands: - @skip_if_redis_enterprise() - async def test_auth(self, r, request): - # sending an AUTH command before setting a user/password on the - # server should return an AuthenticationError - with pytest.raises(exceptions.AuthenticationError): - await r.auth("some_password") - - with pytest.raises(exceptions.AuthenticationError): - await r.auth("some_password", "some_user") - - # first, test for default user (`username` is supposed to be optional) - default_username = "default" - temp_pass = "temp_pass" - await r.config_set("requirepass", temp_pass) - - assert await r.auth(temp_pass, default_username) is True - assert await r.auth(temp_pass) is True - - # test for other users - username = "redis-py-auth" - - async def teardown(): - try: - # this is needed because after an AuthenticationError the connection - # is closed, and if we send an AUTH command a new connection is - # created, but in this case we'd get an "Authentication required" - # error when switching to the db 9 because we're not authenticated yet - # setting the password on the connection itself triggers the - # authentication in the connection's `on_connect` method - r.connection.password = temp_pass - except AttributeError: - # connection field is not set in Redis Cluster, but that's ok - # because the problem discussed above does not apply to Redis Cluster - pass - - await r.auth(temp_pass) - await r.config_set("requirepass", "") - await r.acl_deluser(username) - - request.addfinalizer(teardown) - - assert await r.acl_setuser( - username, enabled=True, passwords=["+strong_password"], commands=["+acl"] - ) - - assert await r.auth(username=username, password="strong_password") is True - - with pytest.raises(exceptions.AuthenticationError): - await r.auth(username=username, password="wrong_password") - - async def test_command_on_invalid_key_type(self, r: redis.Redis): - await r.lpush("a", "1") - with pytest.raises(redis.ResponseError): - await r.get("a") + # @skip_if_redis_enterprise() + # async def test_auth(self, r, request): + # # sending an AUTH command before setting a user/password on the + # # server should return an AuthenticationError + # with pytest.raises(exceptions.AuthenticationError): + # await r.auth("some_password") + + # with pytest.raises(exceptions.AuthenticationError): + # await r.auth("some_password", "some_user") + + # # first, test for default user (`username` is supposed to be optional) + # default_username = "default" + # temp_pass = "temp_pass" + # await r.config_set("requirepass", temp_pass) + + # assert await r.auth(temp_pass, default_username) is True + # assert await r.auth(temp_pass) is True + + # # test for other users + # username = "redis-py-auth" + + # async def teardown(): + # try: + # # this is needed because after an AuthenticationError the connection + # # is closed, and if we send an AUTH command a new connection is + # # created, but in this case we'd get an "Authentication required" + # # error when switching to the db 9 because we're not authenticated yet + # # setting the password on the connection itself triggers the + # # authentication in the connection's `on_connect` method + # r.connection.password = temp_pass + # except AttributeError: + # # connection field is not set in Redis Cluster, but that's ok + # # because the problem discussed above does not apply to Redis Cluster + # pass + + # await r.auth(temp_pass) + # await r.config_set("requirepass", "") + # await r.acl_deluser(username) + + # request.addfinalizer(teardown) + + # assert await r.acl_setuser( + # username, enabled=True, passwords=["+strong_password"], commands=["+acl"] + # ) + + # assert await r.auth(username=username, password="strong_password") is True + + # with pytest.raises(exceptions.AuthenticationError): + # await r.auth(username=username, password="wrong_password") + + # async def test_command_on_invalid_key_type(self, r: redis.Redis): + # await r.lpush("a", "1") + # with pytest.raises(redis.ResponseError): + # await r.get("a") # SERVER INFORMATION @skip_if_server_version_lt(REDIS_6_VERSION) @@ -151,6 +151,18 @@ class TestRedisCommands: assert isinstance(commands, list) assert "get" in commands + @skip_if_server_version_lt("7.0.0") + @skip_if_redis_enterprise() + async def test_acl_dryrun(self, r_teardown): + username = "redis-py-user" + r = r_teardown(username) + + await r.acl_setuser(username, keys=["*"], commands=["+set"]) + assert await r.acl_dryrun(username, "set", "key", "value") == b"OK" + assert await r.acl_dryrun(username, "get", "key").startswith( + b"This user has no permissions to run the" + ) + @skip_if_server_version_lt(REDIS_6_VERSION) async def test_acl_deluser(self, r_teardown): username = "redis-py-user" |
