1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-11 18:06:10 +00:00

Merge pull request #206 from tyewang/propogate_attribute_changes_to_real_connection_on_stubs

Attributes set on VCRConnection now also get set on the real_connection
This commit is contained in:
Ivan 'Goat' Malison
2015-09-20 00:56:54 -07:00
2 changed files with 28 additions and 0 deletions

7
tests/unit/test_stubs.py Normal file
View File

@@ -0,0 +1,7 @@
from vcr.stubs import VCRHTTPSConnection
class TestVCRConnection(object):
def test_setting_of_attributes_get_propogated_to_real_connection(self):
vcr_connection = VCRHTTPSConnection('www.examplehost.com')
vcr_connection.ssl_version = 'example_ssl_version'
assert vcr_connection.real_connection.ssl_version == 'example_ssl_version'

View File

@@ -315,6 +315,27 @@ class VCRConnection(object):
with force_reset():
self.real_connection = self._baseclass(*args, **kwargs)
def __setattr__(self, name, value):
"""
We need to define this because any attributes that are set on the
VCRConnection need to be propogated to the real connection.
For example, urllib3 will set certain attributes on the connection,
such as 'ssl_version'. These attributes need to get set on the real
connection to have the correct and expected behavior.
TODO: Separately setting the attribute on the two instances is not
ideal. We should switch to a proxying implementation.
"""
try:
setattr(self.real_connection, name, value)
except AttributeError:
# raised if real_connection has not been set yet, such as when
# we're setting the real_connection itself for the first time
pass
super(VCRConnection, self).__setattr__(name, value)
class VCRHTTPConnection(VCRConnection):
'''A Mocked class for HTTP requests'''