From a230e2a7e337e699cbb8e938cb20db6b63e889d1 Mon Sep 17 00:00:00 2001 From: Bert Blommers Date: Mon, 28 Jun 2021 16:22:08 +0100 Subject: [PATCH] #3113 - S3#list_object_versions - verify prefix argument (#4041) --- moto/s3/responses.py | 2 +- tests/test_s3/test_s3.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/moto/s3/responses.py b/moto/s3/responses.py index d602a5679..fb3f2974b 100644 --- a/moto/s3/responses.py +++ b/moto/s3/responses.py @@ -483,7 +483,7 @@ class ResponseObject(_TemplateEnvironmentMixin, ActionAuthenticatorMixin): delete_marker_list=delete_marker_list, latest_versions=latest_versions, bucket=bucket, - prefix="", + prefix=prefix, max_keys=1000, delimiter="", is_truncated="false", diff --git a/tests/test_s3/test_s3.py b/tests/test_s3/test_s3.py index 7391ffae5..a7b362cb4 100644 --- a/tests/test_s3/test_s3.py +++ b/tests/test_s3/test_s3.py @@ -5145,3 +5145,21 @@ def test_object_headers(): res.should.have.key("ServerSideEncryption") res.should.have.key("SSEKMSKeyId") res.should.have.key("BucketKeyEnabled") + + +@mock_s3 +def test_get_object_versions_with_prefix(): + bucket_name = "testbucket-3113" + s3_resource = boto3.resource("s3") + s3_client = boto3.client("s3") + s3_client.create_bucket(Bucket=bucket_name) + bucket_versioning = s3_resource.BucketVersioning(bucket_name) + bucket_versioning.enable() + s3_client.put_object(Bucket=bucket_name, Body=b"test", Key="file.txt") + s3_client.put_object(Bucket=bucket_name, Body=b"test", Key="file.txt") + s3_client.put_object(Bucket=bucket_name, Body=b"alttest", Key="altfile.txt") + s3_client.put_object(Bucket=bucket_name, Body=b"test", Key="file.txt") + + versions = s3_client.list_object_versions(Bucket=bucket_name, Prefix="file") + versions["Versions"].should.have.length_of(3) + versions["Prefix"].should.equal("file")