summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJordan Cook <jordan.cook.git@proton.me>2022-08-14 19:02:18 -0500
committerJordan Cook <jordan.cook.git@proton.me>2022-08-23 14:36:40 -0500
commit5691838ac65bf7a3d80a66b4ae3b1fafb40b68a2 (patch)
tree92d8072427a4ae2918dca836635b566c3f23baf6 /tests
parent4a9fb218999460636963b7c4b68e858d40fa6c71 (diff)
downloadrequests-cache-5691838ac65bf7a3d80a66b4ae3b1fafb40b68a2.tar.gz
Add method to recreate cache keys
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/test_base_cache.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/unit/test_base_cache.py b/tests/unit/test_base_cache.py
index f720cb8..033a673 100644
--- a/tests/unit/test_base_cache.py
+++ b/tests/unit/test_base_cache.py
@@ -9,9 +9,11 @@ import pytest
from requests import Request
from requests_cache.backends import BaseCache, SQLiteDict
+from requests_cache.cache_keys import create_key
from requests_cache.models import CachedRequest, CachedResponse
from tests.conftest import (
MOCKED_URL,
+ MOCKED_URL_ETAG,
MOCKED_URL_HTTPS,
MOCKED_URL_JSON,
MOCKED_URL_REDIRECT,
@@ -159,6 +161,44 @@ def test_delete__requests(mock_session):
assert not mock_session.cache.contains(request=request)
+def test_recreate_keys(mock_session):
+ # Cache some initial responses with default key function
+ urls = [MOCKED_URL, MOCKED_URL_JSON, MOCKED_URL_ETAG]
+ for url in urls:
+ mock_session.get(url)
+ old_cache_keys = set(mock_session.cache.responses.keys())
+
+ # Switch to a new key function and recreate keys
+ def new_key_fn(*args, **kwargs):
+ return create_key(*args, **kwargs) + '_suffix'
+
+ # Check that responses are saved with new keys
+ mock_session.settings.key_fn = new_key_fn
+ mock_session.cache.recreate_keys()
+ new_cache_keys = set(mock_session.cache.responses.keys())
+ assert len(old_cache_keys) == len(new_cache_keys) == len(urls)
+ assert old_cache_keys != new_cache_keys
+
+ # Check that responses are returned from the cache correctly using the new key function
+ for url in urls:
+ assert mock_session.get(url).from_cache is True
+
+
+def test_recreate_keys__same_key_fn(mock_session):
+ urls = [MOCKED_URL, MOCKED_URL_JSON, MOCKED_URL_ETAG]
+ for url in urls:
+ mock_session.get(url)
+ old_cache_keys = set(mock_session.cache.responses.keys())
+
+ mock_session.cache.recreate_keys()
+ new_cache_keys = set(mock_session.cache.responses.keys())
+ assert old_cache_keys == new_cache_keys
+
+ # Check that responses are returned from the cache correctly using the new key function
+ for url in urls:
+ assert mock_session.get(url).from_cache is True
+
+
def test_reset_expiration__extend_expiration(mock_session):
# Start with an expired response
mock_session.settings.expire_after = datetime.utcnow() - timedelta(seconds=0.01)