diff options
Diffstat (limited to 'tests/unit/test_session.py')
-rw-r--r-- | tests/unit/test_session.py | 43 |
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(): |