def create_s3_commit_store_from_config(config, repository_name):
    SECTION_NAME = 'General'
    BUCKET_KEY_NAME = 'bucket'
    KEY_PREFIX_NAME = 'prefix'
    REPOSITORY_TO_KEY_PREFIX_MAP = {
        'WAL': 'wals/',
        'Snapshot': 'snapshots/',
    }

    try:
        bucket_name = config.get(SECTION_NAME, BUCKET_KEY_NAME)
    except NoOptionError:
        raise MissingS3Configuration('A "{0}" value must be provided in the'
            ' "{1}" section when using the S3 driver.'.format(BUCKET_KEY_NAME,
            SECTION_NAME))

    common_prefix = ''
    if config.has_option(SECTION_NAME, KEY_PREFIX_NAME):
        common_prefix = config.get(SECTION_NAME, KEY_PREFIX_NAME)

    key_prefix = ''.join([common_prefix,
        REPOSITORY_TO_KEY_PREFIX_MAP[repository_name]])

    access_key, secret_key = get_aws_credentials(config)
    conn = get_s3_connection(access_key, secret_key)
    bucket = conn.create_bucket(bucket_name)
    return S3CommitStorage(bucket, key_prefix)
 def test_will_return_s3_connection(self, mock_connect_s3):
     get_s3_connection('access_key', 'secret_key')
     mock_connect_s3.assert_called_with('access_key', 'secret_key')