Skip to content

Commit

Permalink
Attributes set on VCRConnection now also get set on the real_connection
Browse files Browse the repository at this point in the history
  • Loading branch information
Tye Wang committed Sep 3, 2015
1 parent 34252bc commit 79ff59f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
7 changes: 7 additions & 0 deletions tests/unit/test_stubs.py
Original file line number Diff line number Diff line change
@@ -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'
16 changes: 16 additions & 0 deletions vcr/stubs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,22 @@ def __init__(self, *args, **kwargs):
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.
"""
try:
setattr(self.real_connection, name, value)
except AttributeError: # raised if real_connection has not been set yet
pass

super(VCRConnection, self).__setattr__(name, value)


class VCRHTTPConnection(VCRConnection):
'''A Mocked class for HTTP requests'''
Expand Down

0 comments on commit 79ff59f

Please sign in to comment.