mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 01:03:24 +00:00
Make Request headers to be a dict of lists
This commit is contained in:
@@ -4,3 +4,18 @@ from vcr.request import Request
|
|||||||
def test_str():
|
def test_str():
|
||||||
req = Request('GET', 'http://www.google.com:80/', '', {})
|
req = Request('GET', 'http://www.google.com:80/', '', {})
|
||||||
str(req) == '<Request (GET) http://www.google.com:80/>'
|
str(req) == '<Request (GET) http://www.google.com:80/>'
|
||||||
|
|
||||||
|
|
||||||
|
def test_headers():
|
||||||
|
headers = {'X-Header1': ['h1'], 'X-Header2': 'h2'}
|
||||||
|
req = Request('GET', 'http://go.com:80/', '', headers)
|
||||||
|
assert req.headers == {'X-Header1': ['h1'], 'X-Header2': ['h2']}
|
||||||
|
|
||||||
|
req.add_header('X-Header1', 'h11')
|
||||||
|
assert req.headers == {'X-Header1': ['h1', 'h11'], 'X-Header2': ['h2']}
|
||||||
|
|
||||||
|
|
||||||
|
def test_flat_headers_dict():
|
||||||
|
headers = {'X-Header1': ['h1', 'h11'], 'X-Header2': ['h2']}
|
||||||
|
req = Request('GET', 'http://go.com:80/', '', headers)
|
||||||
|
assert req.flat_headers_dict() == {'X-Header1': 'h1', 'X-Header2': 'h2'}
|
||||||
|
|||||||
@@ -7,10 +7,16 @@ class Request(object):
|
|||||||
self.method = method
|
self.method = method
|
||||||
self.uri = uri
|
self.uri = uri
|
||||||
self.body = body
|
self.body = body
|
||||||
self.headers = headers
|
self.headers = {}
|
||||||
|
for key in headers:
|
||||||
|
self.add_header(key, headers[key])
|
||||||
|
|
||||||
def add_header(self, key, value):
|
def add_header(self, key, value):
|
||||||
self.headers[key] = value
|
value = list(value) if isinstance(value, (tuple, list)) else [value]
|
||||||
|
self.headers.setdefault(key, []).extend(value)
|
||||||
|
|
||||||
|
def flat_headers_dict(self):
|
||||||
|
return {key: self.headers[key][0] for key in self.headers}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def scheme(self):
|
def scheme(self):
|
||||||
@@ -54,7 +60,7 @@ class Request(object):
|
|||||||
'method': self.method,
|
'method': self.method,
|
||||||
'uri': self.uri,
|
'uri': self.uri,
|
||||||
'body': self.body,
|
'body': self.body,
|
||||||
'headers': dict(self.headers),
|
'headers': self.headers,
|
||||||
}
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ class VCRConnection:
|
|||||||
method=self._vcr_request.method,
|
method=self._vcr_request.method,
|
||||||
url=self._url(self._vcr_request.uri),
|
url=self._url(self._vcr_request.uri),
|
||||||
body=self._vcr_request.body,
|
body=self._vcr_request.body,
|
||||||
headers=dict(self._vcr_request.headers or {})
|
headers=self._vcr_request.flat_headers_dict(),
|
||||||
)
|
)
|
||||||
|
|
||||||
# get the response
|
# get the response
|
||||||
|
|||||||
Reference in New Issue
Block a user