From 4f05aa725cd12a8cef8eae6b257e2a6facef39ea Mon Sep 17 00:00:00 2001 From: Srikanth Raju Date: Tue, 6 Mar 2018 01:50:22 -0800 Subject: [PATCH] S3: Do not attempt to return deleted files in bucket listing --- moto/s3/models.py | 1 + tests/test_s3/test_s3.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/moto/s3/models.py b/moto/s3/models.py index 7eb89531f..b8a6a99cc 100644 --- a/moto/s3/models.py +++ b/moto/s3/models.py @@ -722,6 +722,7 @@ class S3Backend(BaseBackend): else: key_results.add(key) + key_results = filter(lambda key: not isinstance(key, FakeDeleteMarker), key_results) key_results = sorted(key_results, key=lambda key: key.name) folder_results = [folder_name for folder_name in sorted( folder_results, key=lambda key: key)] diff --git a/tests/test_s3/test_s3.py b/tests/test_s3/test_s3.py index 33752af60..0d6b691a9 100644 --- a/tests/test_s3/test_s3.py +++ b/tests/test_s3/test_s3.py @@ -1390,6 +1390,21 @@ def test_boto3_copy_object_with_versioning(): obj2_version_new.should_not.equal(obj2_version) +@mock_s3 +def test_boto3_deleted_versionings_list(): + client = boto3.client('s3', region_name='us-east-1') + + client.create_bucket(Bucket='blah') + client.put_bucket_versioning(Bucket='blah', VersioningConfiguration={'Status': 'Enabled'}) + + client.put_object(Bucket='blah', Key='test1', Body=b'test1') + client.put_object(Bucket='blah', Key='test2', Body=b'test2') + client.delete_objects(Bucket='blah', Delete={'Objects': [{'Key': 'test1'}]}) + + listed = client.list_objects_v2(Bucket='blah') + assert len(listed['Contents']) == 1 + + @mock_s3 def test_boto3_head_object_if_modified_since(): s3 = boto3.client('s3', region_name='us-east-1')