summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJordan Cook <jordan.cook@pioneer.com>2021-09-15 12:07:26 -0500
committerJordan Cook <jordan.cook@pioneer.com>2021-09-15 12:07:27 -0500
commitf67aac1b4001e4fcf69ceb35b9eeebceef027edd (patch)
treebcb24550f36892c872c5ef3fe5a7300a484bc5af /tests
parentac86b9b36aec66dc1a9069f7e9ebee6c6591e2c4 (diff)
downloadrequests-cache-v0.7.tar.gz
Redact ingored_parameters from CachedResponse.urlv0.7.5v0.7
Backporting #409 for 0.7
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/test_cache_keys.py4
-rw-r--r--tests/unit/test_session.py26
2 files changed, 24 insertions, 6 deletions
diff --git a/tests/unit/test_cache_keys.py b/tests/unit/test_cache_keys.py
index 2f4b2dd..fffdc3b 100644
--- a/tests/unit/test_cache_keys.py
+++ b/tests/unit/test_cache_keys.py
@@ -15,11 +15,11 @@ def test_remove_ignored_body_params__binary():
request.url = 'https://img.site.com/base/img.jpg'
request.body = b'some bytes'
request.headers = {'Content-Type': 'application/octet-stream'}
- assert remove_ignored_body_params(request, ignored_params=None) == request.body
+ assert remove_ignored_body_params(request, ignored_parameters=None) == request.body
def test_remove_ignored_headers__empty():
request = PreparedRequest()
request.url = 'https://img.site.com/base/img.jpg'
request.headers = {'foo': 'bar'}
- assert remove_ignored_headers(request, ignored_params=None) == request.headers
+ assert remove_ignored_headers(request.headers, ignored_parameters=None) == request.headers
diff --git a/tests/unit/test_session.py b/tests/unit/test_session.py
index d5cc395..e18bc96 100644
--- a/tests/unit/test_session.py
+++ b/tests/unit/test_session.py
@@ -85,14 +85,15 @@ def test_all_methods(field, method, mock_session):
@pytest.mark.parametrize('method', ALL_METHODS)
@pytest.mark.parametrize('field', ['params', 'data', 'json'])
-def test_all_methods__ignore_parameters(field, method, mock_session):
+def test_all_methods__ignored_parameters__not_matched(field, method, mock_session):
"""Test all relevant combinations of methods and data fields. Requests with different request
params, data, or json should not be cached under different keys based on an ignored param.
"""
mock_session.cache.ignored_parameters = ['ignored']
- params_1 = {'ignored': 1, 'not ignored': 1}
- params_2 = {'ignored': 2, 'not ignored': 1}
- params_3 = {'ignored': 2, 'not ignored': 2}
+ mock_session.cache.match_headers = True
+ params_1 = {'ignored': 'value_1', 'not_ignored': 'value_1'}
+ params_2 = {'ignored': 'value_2', 'not_ignored': 'value_1'}
+ params_3 = {'ignored': 'value_2', 'not_ignored': 'value_2'}
assert mock_session.request(method, MOCKED_URL, **{field: params_1}).from_cache is False
assert mock_session.request(method, MOCKED_URL, **{field: params_1}).from_cache is True
@@ -101,6 +102,23 @@ def test_all_methods__ignore_parameters(field, method, mock_session):
assert mock_session.request(method, MOCKED_URL, **{field: params_3}).from_cache is False
+@pytest.mark.parametrize('method', ALL_METHODS)
+@pytest.mark.parametrize('field', ['params', 'headers', 'data', 'json'])
+def test_all_methods__ignored_parameters__redacted(field, method, mock_session):
+ """Test all relevant combinations of methods and data fields. Requests with ignored params
+ should have those values redacted from the cached response.
+ """
+ mock_session.cache.ignored_parameters = ['access_token']
+ params_1 = {'access_token': 'asdf', 'not_ignored': 'value_1'}
+
+ mock_session.request(method, MOCKED_URL, **{field: params_1})
+ cached_response = mock_session.request(method, MOCKED_URL, **{field: params_1})
+ assert 'access_token' not in cached_response.url
+ assert 'access_token' not in cached_response.request.url
+ assert 'access_token' not in cached_response.request.headers
+ assert 'access_token' not in cached_response.request.body.decode('utf-8')
+
+
def test_https(mock_session):
assert mock_session.get(MOCKED_URL_HTTPS, verify=True).from_cache is False
assert mock_session.get(MOCKED_URL_HTTPS, verify=True).from_cache is True