def test_delete_by_prefix(self, file_count): files = { 'Contents': [ {'Key': f'foo/{i}.html'} for i in range(file_count) ], } s3_client = pretend.stub( list_objects_v2=pretend.call_recorder( lambda Bucket=None, Prefix=None: files), delete_objects=pretend.call_recorder( lambda Bucket=None, Delete=None: None), ) storage = S3DocsStorage(s3_client, 'bucket-name') storage.remove_by_prefix('foo') assert s3_client.list_objects_v2.calls == [ pretend.call(Bucket='bucket-name', Prefix='foo'), ] assert s3_client.delete_objects.calls == [ pretend.call( Bucket='bucket-name', Delete={ 'Objects': [ {'Key': f'foo/{i}.html'} for i in range(file_count) ] }, ), ]
def test_delete_by_prefix_more_files(self): files = {"Contents": [{"Key": f"foo/{i}.html"} for i in range(150)]} s3_client = pretend.stub( list_objects_v2=pretend.call_recorder( lambda Bucket=None, Prefix=None: files), delete_objects=pretend.call_recorder( lambda Bucket=None, Delete=None: None), ) storage = S3DocsStorage(s3_client, "bucket-name") storage.remove_by_prefix("foo") assert s3_client.list_objects_v2.calls == [ pretend.call(Bucket="bucket-name", Prefix="foo") ] assert s3_client.delete_objects.calls == [ pretend.call( Bucket="bucket-name", Delete={ "Objects": [{ "Key": f"foo/{i}.html" } for i in range(100)] }, ), pretend.call( Bucket="bucket-name", Delete={ "Objects": [{ "Key": f"foo/{i}.html" } for i in range(100, 150)] }, ), ]
def test_create_service(self): session = boto3.session.Session() request = pretend.stub( find_service=pretend.call_recorder(lambda name: session), registry=pretend.stub(settings={"docs.bucket": "froblob"}), ) storage = S3DocsStorage.create_service(None, request) assert request.find_service.calls == [pretend.call(name="aws.session")] assert storage.bucket_name == "froblob"