def test_list_objects_empty_bucket(stub_and_patch, make_unique_name, make_bucket, object_count): """Test that listing the objects in a test bucket returns the expected list and that the bucket can be emptied of objects.""" stubber = stub_and_patch(bucket_wrapper, 'get_s3') bucket = make_bucket(stubber, bucket_wrapper.get_s3()) object_key = make_unique_name('object') put_keys = [] for obj_suffix in range(0, object_count): key = f"{object_key}-{obj_suffix}" data = bytes(f"Test data-{obj_suffix}", 'utf-8') stubber.stub_put_object(bucket.name, key) stubber.stub_head_object(bucket.name, key) object_wrapper.put_object(bucket, key, data) put_keys.append(key) stubber.stub_list_objects(bucket.name, put_keys) stubber.stub_list_objects(bucket.name, put_keys, "object") stubber.stub_list_objects(bucket.name, put_keys) if put_keys: stubber.stub_delete_objects(bucket.name, put_keys) stubber.stub_list_objects(bucket.name) all_objects = object_wrapper.list_objects(bucket) assert set(put_keys).issubset([o.key for o in all_objects]) filtered_objects = object_wrapper.list_objects(bucket, "object") assert put_keys == [o.key for o in filtered_objects] object_wrapper.empty_bucket(bucket) assert [] == object_wrapper.list_objects(bucket)
def test_delete_objects(stub_and_patch, make_unique_name, make_bucket): """Test that deleting objects from a bucket works as expected.""" stubber = stub_and_patch(bucket_wrapper, 'get_s3') bucket = make_bucket(stubber, bucket_wrapper.get_s3()) object_key = make_unique_name('object') put_keys = [] for suffix in range(0, 5): put_key = f"{object_key}-{suffix}" stubber.stub_put_object(bucket.name, put_key) stubber.stub_head_object(bucket.name, put_key) object_wrapper.put_object(bucket, put_key, b"Test data!") put_keys.append(put_key) delete_keys = put_keys[3:] keep_keys = put_keys[:3] stubber.stub_delete_objects(bucket.name, delete_keys) stubber.stub_list_objects(bucket.name, keep_keys) stubber.stub_list_objects(bucket.name) response = object_wrapper.delete_objects(bucket, delete_keys) assert set(delete_keys) == set(obj['Key'] for obj in response['Deleted']) assert set(keep_keys) == set( obj.key for obj in object_wrapper.list_objects(bucket)) object_wrapper.empty_bucket(bucket)