def test_storecache(self): from liquer.store import MemoryStore state = State().with_data(123) state.query = "abc" for cache in [ StoreCache(MemoryStore(), path=""), StoreCache(MemoryStore(), path="xx"), StoreCache(MemoryStore(), path="xx", flat=True), ]: cache.remove("abc") # Try to remove key from empty cache assert not cache.contains("abc") assert list(cache.keys()) == [] cache.store(state) assert cache.contains("abc") assert list(cache.keys()) == ["abc"] assert cache.get("abc").get() == 123 assert cache.get_metadata("abc")["query"] == "abc" assert cache.store_metadata(dict(query="abc", mymetafield="Hello")) assert cache.get_metadata("abc")["mymetafield"] == "Hello" assert not cache.contains("xyz") assert cache.get("xyz") == None assert not cache.contains("xxx") assert cache.store_metadata(dict(query="xxx", mymetafield="Hello")) assert cache.contains("xxx") assert sorted(cache.keys()) == ["abc", "xxx"] cache.clean() assert not cache.contains("abc") assert list(cache.keys()) == [] assert cache.get("abc") == None
def test_filecache(self): state = State().with_data(123) state.query = "abc" with tempfile.TemporaryDirectory() as cachepath: cache = FileCache(cachepath) cache.remove("abc") # Try to remove key from empty cache assert not cache.contains("abc") assert list(cache.keys()) == [] cache.store(state) assert cache.contains("abc") assert list(cache.keys()) == ["abc"] assert cache.get("abc").get() == 123 assert cache.get_metadata("abc")["query"] == "abc" assert cache.store_metadata(dict(query="abc", mymetafield="Hello")) assert cache.get_metadata("abc")["mymetafield"] == "Hello" assert not cache.contains("xyz") assert cache.get("xyz") == None assert not cache.contains("xxx") assert cache.store_metadata(dict(query="xxx", mymetafield="Hello")) assert cache.contains("xxx") assert sorted(cache.keys()) == ["abc", "xxx"] cache.clean() assert not cache.contains("abc") assert list(cache.keys()) == [] assert cache.get("abc") == None
def test_memory(self): state = State().with_data(123) state.query = "abc" cache = MemoryCache() assert not cache.contains("abc") cache.store(state) assert cache.contains("abc") assert cache.get("abc").get() == 123 assert not cache.contains("xyz") assert cache.get("xyz") == None
def test_nocache(self): state = State().with_data(123) state.query = "abc" cache = NoCache() assert not cache.contains("abc") cache.store(state) assert not cache.contains("abc") assert cache.get("abc") == None assert not cache.contains("xyz") assert cache.get("xyz") == None
def test_filecache(self): state = State().with_data(123) state.query = "abc" with tempfile.TemporaryDirectory() as cachepath: cache = FileCache(cachepath) assert not cache.contains("abc") cache.store(state) assert cache.contains("abc") assert cache.get("abc").get() == 123 assert not cache.contains("xyz") assert cache.get("xyz") == None
def test_cached_part_nocache(self): cache = NoCache() state, remainder = cached_part("abc", cache) assert remainder == "abc" assert state.get() == None state = State().with_data(123) state.query = "abc" cache.store(state) state, remainder = cached_part("/abc/", cache) assert remainder == "abc" assert state.get() == None state, remainder = cached_part("/abc/def/", cache) assert remainder == "abc/def" assert state.get() == None
def test_sqlite_string(self): state = State().with_data(123) state.query = "abc" cache = SQLStringCache.from_sqlite() cache.remove("abc") # Try to remove key from empty cache assert not cache.contains("abc") cache.store(state) assert cache.contains("abc") assert cache.get("abc").get() == 123 assert not cache.contains("xyz") assert cache.get("xyz") == None cache.clean() assert not cache.contains("abc") assert cache.get("abc") == None
def test_xor_file_cache(self): state = State().with_data(123) state.query = "abc" with tempfile.TemporaryDirectory() as cachepath: cache = XORFileCache(cachepath, b"**") cache.remove("abc") # Try to remove key from empty cache assert not cache.contains("abc") cache.store(state) assert cache.contains("abc") assert cache.get("abc").get() == 123 assert not cache.contains("xyz") assert cache.get("xyz") == None cache.clean() assert not cache.contains("abc") assert cache.get("abc") == None
def test_nocache(self): state = State().with_data(123) state.query = "abc" cache = NoCache() cache.remove("abc") # Try to remove key from empty cache assert not cache.contains("abc") cache.store(state) assert not cache.contains("abc") assert cache.get("abc") == None assert not cache.contains("xyz") assert cache.get("xyz") == None cache.clean() assert not cache.contains("abc") assert cache.get("abc") == None
def test_fernet_file_cache(self): from cryptography.fernet import Fernet fernet_key = Fernet.generate_key() state = State().with_data(123) state.query = "abc" with tempfile.TemporaryDirectory() as cachepath: cache = FernetFileCache(cachepath, fernet_key) cache.remove("abc") # Try to remove key from empty cache assert not cache.contains("abc") cache.store(state) assert cache.contains("abc") assert cache.get("abc").get() == 123 assert not cache.contains("xyz") assert cache.get("xyz") == None cache.clean() assert not cache.contains("abc") assert cache.get("abc") == None
def create_initial_state(self): state = State() state.query = "" return state