diff --git a/tests/integration/test_boto3.py b/tests/integration/test_boto3.py index b1e9dd2..1e418e7 100644 --- a/tests/integration/test_boto3.py +++ b/tests/integration/test_boto3.py @@ -8,10 +8,10 @@ import botocore # NOQA import vcr # NOQA ses = boto3.Session( - aws_access_key_id=os.environ['AWS_ACCESS_KEY_ID'], - aws_secret_access_key=os.environ['AWS_SECRET_ACCESS_KEY'], + aws_access_key_id=os.environ.get('AWS_ACCESS_KEY_ID', "default"), + aws_secret_access_key=os.environ.get('AWS_SECRET_ACCESS_KEY', "default"), aws_session_token=None, - region_name=os.environ['AWS_DEFAULT_REGION'], + region_name=os.environ.get('AWS_DEFAULT_REGION', "default"), # botocore_session=None, # profile_name=None ) @@ -87,9 +87,9 @@ def test_boto_medium_difficulty(tmpdir): def test_boto_hardcore_mode(tmpdir): with vcr.use_cassette(str(tmpdir.join('boto3-hardcore.yml'))): ses = boto3.Session( - aws_access_key_id=os.environ['AWS_ACCESS_KEY_ID'], - aws_secret_access_key=os.environ['AWS_SECRET_ACCESS_KEY'], - region_name=os.environ['AWS_DEFAULT_REGION'], + aws_access_key_id=os.environ.get('AWS_ACCESS_KEY_ID'), + aws_secret_access_key=os.environ.get('AWS_SECRET_ACCESS_KEY'), + region_name=os.environ.get('AWS_DEFAULT_REGION'), ) iam_client = ses.client('iam') @@ -98,10 +98,10 @@ def test_boto_hardcore_mode(tmpdir): with vcr.use_cassette(str(tmpdir.join('boto3-hardcore.yml'))) as cass: ses = boto3.Session( - aws_access_key_id=os.environ['AWS_ACCESS_KEY_ID'], - aws_secret_access_key=os.environ['AWS_SECRET_ACCESS_KEY'], + aws_access_key_id=os.environ.get('AWS_ACCESS_KEY_ID'), + aws_secret_access_key=os.environ.get('AWS_SECRET_ACCESS_KEY'), aws_session_token=None, - region_name=os.environ['AWS_DEFAULT_REGION'], + region_name=os.environ.get('AWS_DEFAULT_REGION'), ) iam_client = ses.client('iam') diff --git a/vcr/stubs/boto3_stubs.py b/vcr/stubs/boto3_stubs.py index 80a03f9..d83fac2 100644 --- a/vcr/stubs/boto3_stubs.py +++ b/vcr/stubs/boto3_stubs.py @@ -1,4 +1,5 @@ """Stubs for boto3""" +import six try: # boto using awsrequest @@ -23,3 +24,21 @@ class VCRRequestsHTTPConnection(VCRHTTPConnection, HTTPConnection): class VCRRequestsHTTPSConnection(VCRHTTPSConnection, VerifiedHTTPSConnection): _baseclass = VerifiedHTTPSConnection + + def __init__(self, *args, **kwargs): + if six.PY3: + kwargs.pop('strict', None) # apparently this is gone in py3 + + # need to temporarily reset here because the real connection + # inherits from the thing that we are mocking out. Take out + # the reset if you want to see what I mean :) + from vcr.patch import force_reset + with force_reset(): + self.real_connection = self._baseclass(*args, **kwargs) + # Make sure to set those attributes as it seems `AWSHTTPConnection` does not + # set them, making the connection to fail ! + self.real_connection.assert_hostname = kwargs.get("assert_hostname", False) + self.real_connection.cert_reqs = kwargs.get("cert_reqs", 'CERT_NONE') + + self._sock = None +