From e8bcf494842e2d63dfb5c3160225078902c03f72 Mon Sep 17 00:00:00 2001 From: Raja Sharma Date: Tue, 21 Jan 2025 17:41:33 +0530 Subject: [PATCH] test-case to fix obj by multipart upload cant get tag Signed-off-by: Raja Sharma --- s3tests_boto3/functional/test_s3.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/s3tests_boto3/functional/test_s3.py b/s3tests_boto3/functional/test_s3.py index d8fc2221..d8878c6d 100644 --- a/s3tests_boto3/functional/test_s3.py +++ b/s3tests_boto3/functional/test_s3.py @@ -5685,7 +5685,7 @@ def generate_random(size, part_size=5*1024*1024): if (x == size): return -def _multipart_upload(bucket_name, key, size, part_size=5*1024*1024, client=None, content_type=None, metadata=None, resend_parts=[]): +def _multipart_upload(bucket_name, key, size, part_size=5*1024*1024, client=None, content_type=None, metadata=None, resend_parts=[], tagging=None): """ generate a multi-part upload for a random file of specifed size, if requested, generate a list of the parts @@ -5696,6 +5696,9 @@ def _multipart_upload(bucket_name, key, size, part_size=5*1024*1024, client=None if content_type == None and metadata == None: + if tagging is not None: + response = client.create_multipart_upload(Bucket=bucket_name, Key=key, Tagging=tagging) + else: response = client.create_multipart_upload(Bucket=bucket_name, Key=key) else: response = client.create_multipart_upload(Bucket=bucket_name, Key=key, Metadata=metadata, ContentType=content_type) @@ -11015,6 +11018,30 @@ def _create_simple_tagset(count): def _make_random_string(size): return ''.join(random.choice(string.ascii_letters) for _ in range(size)) +@pytest.mark.tagging +def test_set_multipart_tagging(): + bucket_name = get_new_bucket() + client = get_client() + tags='Hello=World&foo=bar' + key = "mymultipart" + objlen = 1 + + (upload_id, data, parts) = _multipart_upload(bucket_name=bucket_name, key=key, size=objlen, tagging=tags) + response = client.complete_multipart_upload(Bucket=bucket_name, Key=key, UploadId=upload_id, MultipartUpload={'Parts': parts}) + assert response['ResponseMetadata']['HTTPStatusCode'] == 200 + + response = client.get_object_tagging(Bucket=bucket_name, Key=key) + assert len(response['TagSet']) == 2 + assert response['TagSet'][0]['Key'] == 'Hello' + assert response['TagSet'][0]['Value'] == 'World' + assert response['TagSet'][1]['Key'] == 'foo' + assert response['TagSet'][1]['Value'] == 'bar' + + response = client.delete_object_tagging(Bucket=bucket_name, Key=key) + assert response['ResponseMetadata']['HTTPStatusCode'] == 204 + + response = client.get_object_tagging(Bucket=bucket_name, Key=key) + assert len(response['TagSet']) == 0 @pytest.mark.tagging @pytest.mark.fails_on_dbstore -- 2.39.5