(
self, r: RedisCluster, create_redis: Callable[..., RedisCluster]
)
| 2585 | @skip_if_server_version_lt("6.0.0") |
| 2586 | @skip_if_redis_enterprise() |
| 2587 | async def test_acl_log( |
| 2588 | self, r: RedisCluster, create_redis: Callable[..., RedisCluster] |
| 2589 | ) -> None: |
| 2590 | key = "{cache}:" |
| 2591 | node = r.get_node_from_key(key) |
| 2592 | username = "redis-py-user" |
| 2593 | |
| 2594 | await r.acl_setuser( |
| 2595 | username, |
| 2596 | enabled=True, |
| 2597 | reset=True, |
| 2598 | commands=["+get", "+set", "+select", "+cluster", "+command", "+info"], |
| 2599 | keys=["{cache}:*"], |
| 2600 | nopass=True, |
| 2601 | target_nodes="primaries", |
| 2602 | ) |
| 2603 | await r.acl_log_reset(target_nodes=node) |
| 2604 | |
| 2605 | user_client = await create_redis( |
| 2606 | cls=RedisCluster, flushdb=False, username=username |
| 2607 | ) |
| 2608 | |
| 2609 | # Valid operation and key |
| 2610 | assert await user_client.set("{cache}:0", 1) |
| 2611 | assert await user_client.get("{cache}:0") == b"1" |
| 2612 | |
| 2613 | # Invalid key |
| 2614 | with pytest.raises(NoPermissionError): |
| 2615 | await user_client.get("{cache}violated_cache:0") |
| 2616 | |
| 2617 | # Invalid operation |
| 2618 | with pytest.raises(NoPermissionError): |
| 2619 | await user_client.hset("{cache}:0", "hkey", "hval") |
| 2620 | |
| 2621 | assert isinstance(await r.acl_log(target_nodes=node), list) |
| 2622 | assert len(await r.acl_log(target_nodes=node)) == 3 |
| 2623 | assert len(await r.acl_log(count=1, target_nodes=node)) == 1 |
| 2624 | assert isinstance((await r.acl_log(target_nodes=node))[0], dict) |
| 2625 | assert "client-info" in (await r.acl_log(count=1, target_nodes=node))[0] |
| 2626 | assert await r.acl_log_reset(target_nodes=node) |
| 2627 | |
| 2628 | await r.acl_deluser(username, target_nodes="primaries") |
| 2629 | |
| 2630 | await user_client.aclose() |
| 2631 | |
| 2632 | @skip_if_server_version_lt("8.5.240") |
| 2633 | async def test_hotkeys_cluster(self, r: RedisCluster) -> None: |
nothing calls this directly
no test coverage detected