1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
"""The cache_keys module is mostly covered indirectly via other tests.
This just contains tests for some extra edge cases not covered elsewhere.
"""
import pytest
from requests import PreparedRequest
from requests_cache.cache_keys import (
create_key,
normalize_dict,
remove_ignored_body_params,
remove_ignored_headers,
)
def test_normalize_dict__skip_body():
assert normalize_dict(b'some bytes', normalize_data=False) == b'some bytes'
CACHE_KEY = 'f8cd92cfe57ddbf9'
# All of the following variations should produce the same cache key
@pytest.mark.parametrize(
'url, params',
[
('https://example.com?foo=bar¶m=1', None),
('https://example.com?foo=bar¶m=1', {}),
('https://example.com/?foo=bar¶m=1', {}),
('https://example.com?foo=bar¶m=1&', {}),
('https://example.com?param=1&foo=bar', {}),
('https://example.com?param=1', {'foo': 'bar'}),
('https://example.com?foo=bar', {'param': '1'}),
('https://example.com', {'foo': 'bar', 'param': '1'}),
('https://example.com', {'foo': 'bar', 'param': 1}),
('https://example.com?', {'foo': 'bar', 'param': '1'}),
],
)
def test_normalize_url_params(url, params):
request = PreparedRequest()
request.prepare(
method='GET',
url=url,
params=params,
)
assert create_key(request) == CACHE_KEY
def test_remove_ignored_body_params__binary():
request = PreparedRequest()
request.method = 'GET'
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_parameters=None) == request.body
def test_remove_ignored_headers__empty():
request = PreparedRequest()
request.method = 'GET'
request.url = 'https://img.site.com/base/img.jpg'
request.headers = {'foo': 'bar'}
assert remove_ignored_headers(request.headers, ignored_parameters=None) == request.headers
|