mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-08 16:53:23 +00:00
Before this change, vcrpy would not work with modules of Boto (e.g., boto.iam) that use Boto's CertValidatingHTTPSConnection to connect to AWS (unless you went through the extra effort of disabling certificate validation during the tests). This change adds support for those modules.
73 lines
2.9 KiB
Python
73 lines
2.9 KiB
Python
import pytest
|
|
boto = pytest.importorskip("boto")
|
|
import boto
|
|
import boto.iam
|
|
from boto.s3.connection import S3Connection
|
|
from boto.s3.key import Key
|
|
from ConfigParser import DuplicateSectionError
|
|
import vcr
|
|
|
|
def test_boto_stubs(tmpdir):
|
|
with vcr.use_cassette(str(tmpdir.join('boto-stubs.yml'))):
|
|
# Perform the imports within the patched context so that
|
|
# CertValidatingHTTPSConnection refers to the patched version.
|
|
from boto.https_connection import CertValidatingHTTPSConnection
|
|
from vcr.stubs.boto_stubs import VCRCertValidatingHTTPSConnection
|
|
# Prove that the class was patched by the stub and that we can instantiate it.
|
|
assert CertValidatingHTTPSConnection is VCRCertValidatingHTTPSConnection
|
|
CertValidatingHTTPSConnection('hostname.does.not.matter')
|
|
|
|
def test_boto_without_vcr():
|
|
s3_conn = S3Connection()
|
|
s3_bucket = s3_conn.get_bucket('boto-demo-1394171994') # a bucket you can access
|
|
k = Key(s3_bucket)
|
|
k.key = 'test.txt'
|
|
k.set_contents_from_string('hello world i am a string')
|
|
|
|
def test_boto_medium_difficulty(tmpdir):
|
|
s3_conn = S3Connection()
|
|
s3_bucket = s3_conn.get_bucket('boto-demo-1394171994') # a bucket you can access
|
|
with vcr.use_cassette(str(tmpdir.join('boto-medium.yml'))) as cass:
|
|
k = Key(s3_bucket)
|
|
k.key = 'test.txt'
|
|
k.set_contents_from_string('hello world i am a string')
|
|
|
|
with vcr.use_cassette(str(tmpdir.join('boto-medium.yml'))) as cass:
|
|
k = Key(s3_bucket)
|
|
k.key = 'test.txt'
|
|
k.set_contents_from_string('hello world i am a string')
|
|
|
|
|
|
def test_boto_hardcore_mode(tmpdir):
|
|
with vcr.use_cassette(str(tmpdir.join('boto-hardcore.yml'))) as cass:
|
|
s3_conn = S3Connection()
|
|
s3_bucket = s3_conn.get_bucket('boto-demo-1394171994') # a bucket you can access
|
|
k = Key(s3_bucket)
|
|
k.key = 'test.txt'
|
|
k.set_contents_from_string('hello world i am a string')
|
|
|
|
with vcr.use_cassette(str(tmpdir.join('boto-hardcore.yml'))) as cass:
|
|
s3_conn = S3Connection()
|
|
s3_bucket = s3_conn.get_bucket('boto-demo-1394171994') # a bucket you can access
|
|
k = Key(s3_bucket)
|
|
k.key = 'test.txt'
|
|
k.set_contents_from_string('hello world i am a string')
|
|
|
|
def test_boto_iam(tmpdir):
|
|
try:
|
|
boto.config.add_section('Boto')
|
|
except DuplicateSectionError:
|
|
pass
|
|
# Ensure that boto uses HTTPS
|
|
boto.config.set('Boto', 'is_secure', 'true')
|
|
# Ensure that boto uses CertValidatingHTTPSConnection
|
|
boto.config.set('Boto', 'https_validate_certificates', 'true')
|
|
|
|
with vcr.use_cassette(str(tmpdir.join('boto-iam.yml'))) as cass:
|
|
iam_conn = boto.iam.connect_to_region('universal')
|
|
iam_conn.get_all_users()
|
|
|
|
with vcr.use_cassette(str(tmpdir.join('boto-iam.yml'))) as cass:
|
|
iam_conn = boto.iam.connect_to_region('universal')
|
|
iam_conn.get_all_users()
|