mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 01:03:24 +00:00
This commit is contained in:
@@ -199,3 +199,18 @@ def test_nested_cassettes_with_session_created_before_nesting(scheme, tmpdir):
|
|||||||
# Make sure that the session can now get content normally.
|
# Make sure that the session can now get content normally.
|
||||||
session.get('http://www.reddit.com')
|
session.get('http://www.reddit.com')
|
||||||
|
|
||||||
|
|
||||||
|
def test_post_file(tmpdir, scheme):
|
||||||
|
'''Ensure that we handle posting a file.'''
|
||||||
|
url = scheme + '://httpbin.org/post'
|
||||||
|
with vcr.use_cassette(str(tmpdir.join('post_file.yaml'))) as cass, open('tox.ini') as f:
|
||||||
|
original_response = requests.post(url, f).content
|
||||||
|
|
||||||
|
# This also tests that we do the right thing with matching the body when they are files.
|
||||||
|
with vcr.use_cassette(str(tmpdir.join('post_file.yaml')),
|
||||||
|
match_on=('method', 'scheme', 'host', 'port', 'path', 'query', 'body')) as cass, open('tox.ini') as f:
|
||||||
|
tox_content = f.read()
|
||||||
|
assert cass.requests[0].body.read() == tox_content
|
||||||
|
with open('tox.ini') as f:
|
||||||
|
new_response = requests.post(url, f).content
|
||||||
|
assert original_response == new_response
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ def query(r1, r2):
|
|||||||
|
|
||||||
|
|
||||||
def body(r1, r2):
|
def body(r1, r2):
|
||||||
|
if hasattr(r1.body, 'read') and hasattr(r2.body, 'read'):
|
||||||
|
return r1.body.read() == r2.body.read()
|
||||||
return r1.body == r2.body
|
return r1.body == r2.body
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import StringIO
|
||||||
from six.moves.urllib.parse import urlparse, parse_qsl
|
from six.moves.urllib.parse import urlparse, parse_qsl
|
||||||
|
|
||||||
|
|
||||||
@@ -26,11 +27,16 @@ class Request(object):
|
|||||||
def __init__(self, method, uri, body, headers):
|
def __init__(self, method, uri, body, headers):
|
||||||
self.method = method
|
self.method = method
|
||||||
self.uri = uri
|
self.uri = uri
|
||||||
self.body = body
|
self._was_file = hasattr(body, 'read')
|
||||||
|
self._body = body.read() if self._was_file else body
|
||||||
self.headers = {}
|
self.headers = {}
|
||||||
for key in headers:
|
for key in headers:
|
||||||
self.add_header(key, headers[key])
|
self.add_header(key, headers[key])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def body(self):
|
||||||
|
return StringIO.StringIO(self._body) if self._was_file else self._body
|
||||||
|
|
||||||
def add_header(self, key, value):
|
def add_header(self, key, value):
|
||||||
# see class docstring for an explanation
|
# see class docstring for an explanation
|
||||||
if isinstance(value, (tuple, list)):
|
if isinstance(value, (tuple, list)):
|
||||||
|
|||||||
Reference in New Issue
Block a user