summaryrefslogtreecommitdiff
path: root/tests/unit/test_session.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/test_session.py')
-rw-r--r--tests/unit/test_session.py43
1 files changed, 34 insertions, 9 deletions
diff --git a/tests/unit/test_session.py b/tests/unit/test_session.py
index 72c6977..7ed2c1b 100644
--- a/tests/unit/test_session.py
+++ b/tests/unit/test_session.py
@@ -22,6 +22,7 @@ from requests_cache.backends.base import DESERIALIZE_ERRORS
from requests_cache.policy.expiration import DO_NOT_CACHE, EXPIRE_IMMEDIATELY, NEVER_EXPIRE
from tests.conftest import (
MOCKED_URL,
+ MOCKED_URL_200_404,
MOCKED_URL_404,
MOCKED_URL_500,
MOCKED_URL_ETAG,
@@ -384,16 +385,39 @@ def test_stale_if_error__exception(mock_session):
def test_stale_if_error__error_code(mock_session):
- """With stale_if_error, expect to get old cache data if a response has an error status code"""
+ """With stale_if_error, expect to get old cache data if a response has an error status code,
+ that is not in allowable_codes.
+ """
+ mock_session.settings.stale_if_error = True
+ mock_session.settings.expire_after = 1
+ mock_session.settings.allowable_codes = (200,)
+
+ assert mock_session.get(MOCKED_URL_200_404).status_code == 200
+
+ sleep(1)
+
+ response = mock_session.get(MOCKED_URL_200_404)
+ assert response.status_code == 200
+ assert response.from_cache is True
+ assert response.is_expired is True
+
+
+def test_stale_if_error__error_code_in_allowable_codes(mock_session):
+ """With stale_if_error, expect to get the failed response if a response has an error status code,
+ that is in allowable_codes.
+ """
mock_session.settings.stale_if_error = True
mock_session.settings.expire_after = 1
mock_session.settings.allowable_codes = (200, 404)
- assert mock_session.get(MOCKED_URL_404).from_cache is False
+ assert mock_session.get(MOCKED_URL_200_404).status_code == 200
sleep(1)
- response = mock_session.get(MOCKED_URL_404)
- assert response.from_cache is True and response.is_expired is True
+
+ response = mock_session.get(MOCKED_URL_200_404)
+ assert response.status_code == 404
+ assert response.from_cache is False
+ assert response.is_expired is False
def test_stale_if_error__max_stale(mock_session):
@@ -402,15 +426,16 @@ def test_stale_if_error__max_stale(mock_session):
"""
mock_session.settings.stale_if_error = timedelta(seconds=15)
mock_session.settings.expire_after = datetime.utcnow() - timedelta(seconds=10)
- mock_session.settings.allowable_codes = (200, 404)
- mock_session.get(MOCKED_URL_404).from_cache
+ mock_session.settings.allowable_codes = (200,)
+ mock_session.get(MOCKED_URL_200_404).from_cache
- response = mock_session.get(MOCKED_URL_404)
- assert response.from_cache is True and response.is_expired is True
+ response = mock_session.get(MOCKED_URL_200_404)
+ assert response.from_cache is True
+ assert response.is_expired is True
mock_session.settings.stale_if_error = 5
with pytest.raises(HTTPError):
- mock_session.get(MOCKED_URL_404)
+ mock_session.get(MOCKED_URL_200_404)
def test_old_data_on_error():