text: import random
  from typing import List, Any
  
  from fidesops.core.config import config
  from fidesops.util.cache import FidesopsRedis
  from ..fixtures import faker
  
  
  def test_get_cache(cache: FidesopsRedis) -> None:
      assert cache is not None
      assert callable(cache.set_with_autoexpire)
  
  
  def test_cache_set_with_autoexpire(cache: FidesopsRedis) -> None:
      key = "a_key"
      value = "a_value"
      ttl_range = list(
          range(
              # Let's give this a 3 second buffer time to still pass
              config.redis.DEFAULT_TTL_SECONDS - 2,
              config.redis.DEFAULT_TTL_SECONDS + 1,
          )
      )
      cache.set_with_autoexpire(key, value)
      assert cache.ttl(key) in ttl_range
      assert cache.get(key) == value
  
  
  def test_cache_set(cache: FidesopsRedis) -> None:
      key = "another_key"
      value = "another_value"
      res = cache.set(key, value)
      assert res
  
  
  class CacheTestObject:
      def __init__(self, *values: Any):
          self.values = values
  
      def __eq__(self, other):
          return other.__hash__() == self.__hash__()
  
      def __hash__(self):
          return hash(self.values)
  
  
  def test_encode_decode() -> None:
      for i in range(10):
          test_obj = CacheTestObject(
              random.random(), random.randint(0, 1000), faker.name()
          )
          assert FidesopsRedis.decode_obj(FidesopsRedis.encode_obj(test_obj)) == test_obj
      assert FidesopsRedis.decode_obj(None) is None
  
  
  def test_scan(cache: FidesopsRedis) -> List:
      test_key = random.random()
      prefix = f"redis_key_{test_key}_"
  
      test_data = {
          f"{prefix}{i}": CacheTestObject(f"{prefix}{i}", random.random())
          for i in range(100)
      }
      for k, v in test_data.items():
          cache.set_encoded_object(k, v)
  
      keys = cache.get_keys_by_prefix(f"EN_{prefix}", random.randint(10, 100))
      assert len(keys) == 100
  
      cache.delete_keys_by_prefix(f"EN_{prefix}")
      keys = cache.get_keys_by_prefix(f"EN_{prefix}")
      assert len(keys) == 0
  