summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJordan Cook <jordan.cook.git@proton.me>2022-09-30 18:45:36 -0500
committerJordan Cook <jordan.cook.git@proton.me>2022-09-30 19:45:58 -0500
commit8be0f51a1e310342814e5ec1d19830aae857b39e (patch)
treebac69b60cf19497d84a802a7c3152997a4af973e /tests
parent228ca75f4102e951568a2e72b259e004a40a137e (diff)
downloadrequests-cache-8be0f51a1e310342814e5ec1d19830aae857b39e.tar.gz
Add 'url' argument to BaseCache.contains() and delete() for similarity to has_url() and delete_url()
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/base_cache_test.py4
-rw-r--r--tests/sample_data/sample.db.1.0.0-beta (renamed from tests/sample_data/sample.db.1.0.0-alpha)bin122880 -> 122880 bytes
-rw-r--r--tests/unit/test_base_cache.py21
-rw-r--r--tests/unit/test_session.py39
4 files changed, 40 insertions, 24 deletions
diff --git a/tests/integration/base_cache_test.py b/tests/integration/base_cache_test.py
index 546f6c5..4a55504 100644
--- a/tests/integration/base_cache_test.py
+++ b/tests/integration/base_cache_test.py
@@ -302,8 +302,8 @@ class BaseCacheTest:
assert len(session.cache.responses.keys()) == 2
assert len(session.cache.redirects.keys()) == 3
- assert not session.cache.has_url(httpbin('redirect/1'))
- assert not any([session.cache.has_url(httpbin(f)) for f in HTTPBIN_FORMATS])
+ assert not session.cache.contains(url=httpbin('redirect/1'))
+ assert not any([session.cache.contains(url=httpbin(f)) for f in HTTPBIN_FORMATS])
@pytest.mark.parametrize('method', HTTPBIN_METHODS)
def test_filter_request_headers(self, method):
diff --git a/tests/sample_data/sample.db.1.0.0-alpha b/tests/sample_data/sample.db.1.0.0-beta
index b727b22..148979a 100644
--- a/tests/sample_data/sample.db.1.0.0-alpha
+++ b/tests/sample_data/sample.db.1.0.0-beta
Binary files differ
diff --git a/tests/unit/test_base_cache.py b/tests/unit/test_base_cache.py
index 0a0b265..fe25337 100644
--- a/tests/unit/test_base_cache.py
+++ b/tests/unit/test_base_cache.py
@@ -50,6 +50,12 @@ def test_contains__request(mock_session):
assert not mock_session.cache.contains(request=request)
+def test_contains__url(mock_session):
+ mock_session.get(MOCKED_URL)
+ assert mock_session.cache.contains(url=MOCKED_URL)
+ assert not mock_session.cache.contains(url=f'{MOCKED_URL}?foo=bar')
+
+
@patch_normalize_url
def test_delete__expired(mock_normalize_url, mock_session):
unexpired_url = f'{MOCKED_URL}?x=1'
@@ -151,6 +157,17 @@ def test_delete__older_than(mock_session):
assert len(mock_session.cache.responses) == 0
+def test_delete__urls(mock_session):
+ urls = [MOCKED_URL, MOCKED_URL_JSON, MOCKED_URL_REDIRECT]
+ for url in urls:
+ mock_session.get(url)
+
+ mock_session.cache.delete(urls=urls)
+
+ for url in urls:
+ assert not mock_session.cache.contains(url=url)
+
+
def test_delete__requests(mock_session):
urls = [MOCKED_URL, MOCKED_URL_JSON, MOCKED_URL_REDIRECT]
for url in urls:
@@ -228,8 +245,8 @@ def test_clear(mock_session):
mock_session.get(MOCKED_URL)
mock_session.get(MOCKED_URL_REDIRECT)
mock_session.cache.clear()
- assert not mock_session.cache.contains(request=Request('GET', MOCKED_URL))
- assert not mock_session.cache.contains(request=Request('GET', MOCKED_URL_REDIRECT))
+ assert not mock_session.cache.contains(url=MOCKED_URL)
+ assert not mock_session.cache.contains(url=MOCKED_URL_REDIRECT)
def test_save_response__manual(mock_session):
diff --git a/tests/unit/test_session.py b/tests/unit/test_session.py
index 60f2d42..53e368c 100644
--- a/tests/unit/test_session.py
+++ b/tests/unit/test_session.py
@@ -453,12 +453,12 @@ def test_allowable_codes(mock_session):
# This request should be cached
mock_session.get(MOCKED_URL_404)
- assert mock_session.cache.has_url(MOCKED_URL_404)
+ assert mock_session.cache.contains(url=MOCKED_URL_404)
assert mock_session.get(MOCKED_URL_404).from_cache is True
# This request should be filtered out on both read and write
mock_session.get(MOCKED_URL_500)
- assert not mock_session.cache.has_url(MOCKED_URL_500)
+ assert not mock_session.cache.contains(url=MOCKED_URL_500)
assert mock_session.get(MOCKED_URL_500).from_cache is False
@@ -467,20 +467,20 @@ def test_allowable_methods(mock_session):
# This request should be cached
mock_session.options(MOCKED_URL)
- assert mock_session.cache.has_url(MOCKED_URL, method='OPTIONS')
+ assert mock_session.cache.contains(request=Request('OPTIONS', MOCKED_URL))
assert mock_session.options(MOCKED_URL).from_cache is True
# These requests should be filtered out on both read and write
mock_session.put(MOCKED_URL)
- assert not mock_session.cache.has_url(MOCKED_URL, method='PUT')
+ assert not mock_session.cache.contains(request=Request('PUT', MOCKED_URL))
assert mock_session.put(MOCKED_URL).from_cache is False
mock_session.patch(MOCKED_URL)
- assert not mock_session.cache.has_url(MOCKED_URL, method='PATCH')
+ assert not mock_session.cache.contains(request=Request('PATCH', MOCKED_URL))
assert mock_session.patch(MOCKED_URL).from_cache is False
mock_session.delete(MOCKED_URL)
- assert not mock_session.cache.has_url(MOCKED_URL, method='DELETE')
+ assert not mock_session.cache.contains(request=Request('DELETE', MOCKED_URL))
assert mock_session.delete(MOCKED_URL).from_cache is False
@@ -532,12 +532,12 @@ def test_filter_fn(mock_normalize_url, mock_session):
# This request should be cached
mock_session.get(MOCKED_URL)
- assert mock_session.cache.has_url(MOCKED_URL)
+ assert mock_session.cache.contains(url=MOCKED_URL)
assert mock_session.get(MOCKED_URL).from_cache is True
# This request should be filtered out on both read and write
mock_session.get(MOCKED_URL_JSON)
- assert not mock_session.cache.has_url(MOCKED_URL_JSON)
+ assert not mock_session.cache.contains(url=MOCKED_URL_JSON)
assert mock_session.get(MOCKED_URL_JSON).from_cache is False
@@ -547,7 +547,7 @@ def test_filter_fn__retroactive(mock_normalize_url, mock_session):
mock_session.get(MOCKED_URL_JSON)
mock_session.settings.filter_fn = lambda r: r.request.url != MOCKED_URL_JSON
mock_session.get(MOCKED_URL_JSON)
- assert not mock_session.cache.has_url(MOCKED_URL_JSON)
+ assert not mock_session.cache.contains(url=MOCKED_URL_JSON)
def test_key_fn(mock_session):
@@ -586,7 +586,7 @@ def test_expire_after_alias(mock_session):
def test_do_not_cache(mock_session):
"""DO_NOT_CACHE should bypass the cache on both read and write"""
mock_session.get(MOCKED_URL)
- assert mock_session.cache.has_url(MOCKED_URL)
+ assert mock_session.cache.contains(url=MOCKED_URL)
# Skip read
response = mock_session.get(MOCKED_URL, expire_after=DO_NOT_CACHE)
@@ -595,7 +595,7 @@ def test_do_not_cache(mock_session):
# Skip write
mock_session.settings.expire_after = DO_NOT_CACHE
mock_session.get(MOCKED_URL_JSON)
- assert not mock_session.cache.has_url(MOCKED_URL_JSON)
+ assert not mock_session.cache.contains(url=MOCKED_URL_JSON)
def test_expire_immediately(mock_session):
@@ -604,7 +604,7 @@ def test_expire_immediately(mock_session):
mock_session.settings.expire_after = EXPIRE_IMMEDIATELY
mock_session.get(MOCKED_URL)
response = mock_session.get(MOCKED_URL)
- assert not mock_session.cache.has_url(MOCKED_URL)
+ assert not mock_session.cache.contains(url=MOCKED_URL)
assert response.from_cache is False
# With validator
@@ -650,7 +650,7 @@ def test_url_allowlist(mock_session):
assert mock_session.get(MOCKED_URL_JSON).from_cache is True
mock_session.get(MOCKED_URL)
assert mock_session.get(MOCKED_URL).from_cache is False
- assert not mock_session.cache.has_url(MOCKED_URL)
+ assert not mock_session.cache.contains(url=MOCKED_URL)
def test_stale_while_revalidate(mock_session):
@@ -659,7 +659,7 @@ def test_stale_while_revalidate(mock_session):
mock_session.settings.stale_while_revalidate = True
mock_session.get(MOCKED_URL_ETAG, expire_after=timedelta(seconds=-2))
mock_session.get(mocked_url_2, expire_after=timedelta(seconds=-2))
- assert mock_session.cache.has_url(MOCKED_URL_ETAG)
+ assert mock_session.cache.contains(url=MOCKED_URL_ETAG)
# First, let's just make sure the correct method is called
mock_session.mock_adapter.register_uri('GET', MOCKED_URL_ETAG, status_code=304)
@@ -677,11 +677,10 @@ def test_stale_while_revalidate(mock_session):
response = mock_session.get(mocked_url_2, expire_after=60)
assert response.from_cache is True and response.is_expired is True
assert time() - start < 0.1
- sleep(0.1)
+ sleep(1) # Background thread may be a bit slow on CI runner
mock_send.assert_called()
# Finally, check that the cached response has been refreshed
- sleep(0.2) # Background thread may be a bit slow on CI runner
response = mock_session.get(mocked_url_2)
assert response.from_cache is True and response.is_expired is False
@@ -744,7 +743,7 @@ def test_request_expire_after__disable_expiration(mock_session):
def test_request_expire_after__prepared_request(mock_session):
"""Pre-request expiration should also work for PreparedRequests with CachedSession.send()"""
mock_session.settings.expire_after = None
- request = Request(method='GET', url=MOCKED_URL, headers={}, data=None).prepare()
+ request = Request('GET', MOCKED_URL, headers={}, data=None).prepare()
response = mock_session.send(request, expire_after=1)
assert response.from_cache is False
assert mock_session.send(request).from_cache is True
@@ -803,7 +802,7 @@ def test_request_only_if_cached__skips_revalidate(mock_session):
def test_request_only_if_cached__prepared_request(mock_session):
"""The only_if_cached option should also work for PreparedRequests with CachedSession.send()"""
- request = Request(method='GET', url=MOCKED_URL, headers={}).prepare()
+ request = Request('GET', MOCKED_URL, headers={}).prepare()
response = mock_session.send(request, only_if_cached=True)
assert response.status_code == 504
with pytest.raises(HTTPError):
@@ -848,7 +847,7 @@ def test_request_refresh__no_validator(mock_session):
def test_request_refresh__prepared_request(mock_session):
"""The refresh option should also work for PreparedRequests with CachedSession.send()"""
mock_session.settings.expire_after = 60
- request = Request(method='GET', url=MOCKED_URL_ETAG, headers={}, data=None).prepare()
+ request = Request('GET', MOCKED_URL_ETAG, headers={}, data=None).prepare()
response_1 = mock_session.send(request)
response_2 = mock_session.send(request)
mock_session.mock_adapter.register_uri('GET', MOCKED_URL_ETAG, status_code=304)
@@ -880,7 +879,7 @@ def test_request_force_refresh(mock_session):
def test_request_force_refresh__prepared_request(mock_session):
"""The force_refresh option should also work for PreparedRequests with CachedSession.send()"""
mock_session.settings.expire_after = 60
- request = Request(method='GET', url=MOCKED_URL, headers={}, data=None)
+ request = Request('GET', MOCKED_URL, headers={}, data=None)
response_1 = mock_session.send(request.prepare())
response_2 = mock_session.send(request.prepare(), force_refresh=True)
response_3 = mock_session.send(request.prepare())