"""Test Redis Connector.""" from datetime import datetime from time import sleep from uuid import uuid4 from permissions.connectors import redis def test_redis_get(): """Test all the redis client methods.""" key = f'get_random_{uuid4()}' redis.delete(key) assert redis.get(key) is None def test_redis_set(): """Test all the redis client methods.""" key = f'set_random_{uuid4()}' redis.delete(key) data = [ { 'isDistributor': 'N', 'labelIdentifier': 'Test', 'name': 'Test Label', 'vendorId': 7123, 'id': 7123, 'uuid': '573d0372-7f2f-48a6-8deb-c9a6558f9549', 'touchedByBackfill': datetime.now().isoformat(), 'status': 'signed', 'type': 'Vendor', 'roles': [], } ] redis.set(key, data, 1) assert redis.get(key) == data sleep(1) assert redis.get(key) is None def test_redis_delete_keys(): """Test redis deletes a list of keys.""" keys = [f'set_random_{uuid4()}', f'set_random_{uuid4()}'] data = {'some': 'data'} for key in keys: redis.set(key, data) assert redis.get(key) == data redis.delete_keys(keys) for key in keys: assert redis.get(key) is None def test_redis_delete_all_matching_pattern(): """Test all the redis client methods.""" prefix = 'set_random' keys = [ f'{prefix}_{uuid4()}', f'{prefix}_{uuid4()}', f'nodelete_{uuid4()}', ] # assert all values present for k in keys: redis.set(k, k) assert redis.get(k).decode() == k # delete and assert only the entries matching the pattern were deleted redis.delete_all_matching_pattern(f'{prefix}_*') assert redis.get(keys[2]).decode() == keys[2] for k in keys[0:2]: assert redis.get(k) is None