mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 17:15:35 +00:00
Merge pull request #192 from agriffis/insensitive-headers
Make request.headers always a CaseInsensitiveDict.
This commit is contained in:
@@ -17,11 +17,7 @@ def _request_with_auth(url, username, password):
|
||||
|
||||
|
||||
def _find_header(cassette, header):
|
||||
for request in cassette.requests:
|
||||
for k in request.headers:
|
||||
if header.lower() == k.lower():
|
||||
return True
|
||||
return False
|
||||
return any(header in request.headers for request in cassette.requests)
|
||||
|
||||
|
||||
def test_filter_basic_auth(tmpdir):
|
||||
|
||||
@@ -73,7 +73,7 @@ def test_remove_nonexistent_post_data_parameters():
|
||||
def test_remove_json_post_data_parameters():
|
||||
body = b'{"id": "secret", "foo": "bar", "baz": "qux"}'
|
||||
request = Request('POST', 'http://google.com', body, {})
|
||||
request.add_header('Content-Type', 'application/json')
|
||||
request.headers['Content-Type'] = 'application/json'
|
||||
remove_post_data_parameters(request, ['id'])
|
||||
request_body_json = json.loads(request.body.decode('utf-8'))
|
||||
expected_json = json.loads(b'{"foo": "bar", "baz": "qux"}'.decode('utf-8'))
|
||||
@@ -83,7 +83,7 @@ def test_remove_json_post_data_parameters():
|
||||
def test_remove_all_json_post_data_parameters():
|
||||
body = b'{"id": "secret", "foo": "bar"}'
|
||||
request = Request('POST', 'http://google.com', body, {})
|
||||
request.add_header('Content-Type', 'application/json')
|
||||
request.headers['Content-Type'] = 'application/json'
|
||||
remove_post_data_parameters(request, ['id', 'foo'])
|
||||
assert request.body == b'{}'
|
||||
|
||||
@@ -91,6 +91,6 @@ def test_remove_all_json_post_data_parameters():
|
||||
def test_remove_nonexistent_json_post_data_parameters():
|
||||
body = b'{}'
|
||||
request = Request('POST', 'http://google.com', body, {})
|
||||
request.add_header('Content-Type', 'application/json')
|
||||
request.headers['Content-Type'] = 'application/json'
|
||||
remove_post_data_parameters(request, ['id'])
|
||||
assert request.body == b'{}'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import pytest
|
||||
|
||||
from vcr.request import Request
|
||||
from vcr.request import Request, HeadersDict
|
||||
|
||||
|
||||
def test_str():
|
||||
@@ -12,11 +12,16 @@ def test_headers():
|
||||
headers = {'X-Header1': ['h1'], 'X-Header2': 'h2'}
|
||||
req = Request('GET', 'http://go.com/', '', headers)
|
||||
assert req.headers == {'X-Header1': 'h1', 'X-Header2': 'h2'}
|
||||
|
||||
req.add_header('X-Header1', 'h11')
|
||||
req.headers['X-Header1'] = 'h11'
|
||||
assert req.headers == {'X-Header1': 'h11', 'X-Header2': 'h2'}
|
||||
|
||||
|
||||
def test_add_header_deprecated():
|
||||
req = Request('GET', 'http://go.com/', '', {})
|
||||
pytest.deprecated_call(req.add_header, 'foo', 'bar')
|
||||
assert req.headers == {'foo': 'bar'}
|
||||
|
||||
|
||||
@pytest.mark.parametrize("uri, expected_port", [
|
||||
('http://go.com/', 80),
|
||||
('http://go.com:80/', 80),
|
||||
@@ -36,3 +41,30 @@ def test_uri():
|
||||
|
||||
req = Request('GET', 'http://go.com:80/', '', {})
|
||||
assert req.uri == 'http://go.com:80/'
|
||||
|
||||
|
||||
def test_HeadersDict():
|
||||
|
||||
# Simple test of CaseInsensitiveDict
|
||||
h = HeadersDict()
|
||||
assert h == {}
|
||||
h['Content-Type'] = 'application/json'
|
||||
assert h == {'Content-Type': 'application/json'}
|
||||
assert h['content-type'] == 'application/json'
|
||||
assert h['CONTENT-TYPE'] == 'application/json'
|
||||
|
||||
# Test feature of HeadersDict: devolve list to first element
|
||||
h = HeadersDict()
|
||||
assert h == {}
|
||||
h['x'] = ['foo', 'bar']
|
||||
assert h == {'x': 'foo'}
|
||||
|
||||
# Test feature of HeadersDict: preserve original key case
|
||||
h = HeadersDict()
|
||||
assert h == {}
|
||||
h['Content-Type'] = 'application/json'
|
||||
assert h == {'Content-Type': 'application/json'}
|
||||
h['content-type'] = 'text/plain'
|
||||
assert h == {'Content-Type': 'text/plain'}
|
||||
h['CONtent-tyPE'] = 'whoa'
|
||||
assert h == {'Content-Type': 'whoa'}
|
||||
|
||||
Reference in New Issue
Block a user