blob: 8276b8034e723e33532ab13b917e64b810dfa3bf [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the 'License'); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import sys
import unittest
try:
import boto3
except ImportError:
boto3 = None
from integration.storage.base import Integration
from libcloud.storage import types
class S3Test(Integration.TestBase):
provider = 's3'
@classmethod
def setUpClass(cls):
if boto3 is None:
raise unittest.SkipTest('missing boto3 library')
config = {
key: os.getenv(key)
for key in (
'AWS_ACCESS_KEY_ID',
'AWS_ACCESS_KEY_SECRET',
)
}
for key, value in config.items():
if not value:
raise unittest.SkipTest('missing environment variable %s' % key)
cls.account = config['AWS_ACCESS_KEY_ID']
cls.secret = config['AWS_ACCESS_KEY_SECRET']
@classmethod
def tearDownClass(cls):
client = boto3.Session(
aws_access_key_id=cls.account,
aws_secret_access_key=cls.secret,
).client('s3')
buckets = (
item['Name']
for item in client.list_buckets()['Buckets']
if item['Name'].startswith(cls.container_name_prefix)
)
for name in buckets:
bucket = boto3.resource('s3').Bucket(name)
bucket.objects.delete()
client.delete_bucket(name)
def assert_existing_container_cannot_be_recreated(self, container):
pass
def assert_file_is_missing(self, container, obj):
with self.assertRaises(types.ObjectDoesNotExistError):
self.driver.get_object(container.name, obj.name)
if __name__ == '__main__':
sys.exit(unittest.main())