import pytest boto = pytest.importorskip("boto") import boto # NOQA import boto.iam # NOQA from boto.s3.connection import S3Connection # NOQA from boto.s3.key import Key # NOQA from configparser import DuplicateSectionError # NOQA import vcr # NOQA 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 issubclass(CertValidatingHTTPSConnection, 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"))): 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"))): 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"))): 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"))): 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"))): iam_conn = boto.iam.connect_to_region("universal") iam_conn.get_all_users() with vcr.use_cassette(str(tmpdir.join("boto-iam.yml"))): iam_conn = boto.iam.connect_to_region("universal") iam_conn.get_all_users()