From 7cefe6352175abeb0e9b2282f804f5d5970dbe2e Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Thu, 16 Dec 2021 14:54:26 -0500 Subject: [PATCH] sse: test uploads that request x-amz-server-side-encryption=AES256 Signed-off-by: Casey Bodley --- s3tests_boto3/functional/test_s3.py | 56 +++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/s3tests_boto3/functional/test_s3.py b/s3tests_boto3/functional/test_s3.py index 2bf38d3..44f9f80 100644 --- a/s3tests_boto3/functional/test_s3.py +++ b/s3tests_boto3/functional/test_s3.py @@ -13495,8 +13495,7 @@ def test_get_bucket_encryption(): response = client.get_bucket_encryption(Bucket=bucket_name) eq(response['ResponseMetadata']['HTTPStatusCode'], 200) - eq(response['ServerSideEncryptionConfiguration']['Rules'][0]['ApplyServerSideEncryptionByDefault']['SSEAlgorithm'], - server_side_encryption_conf['Rules'][0]['ApplyServerSideEncryptionByDefault']['SSEAlgorithm']) + eq(response['ServerSideEncryptionConfiguration']['Rules'][0]['ApplyServerSideEncryptionByDefault']['SSEAlgorithm'], 'AES256') @attr(resource='bucket') @@ -13702,3 +13701,56 @@ def test_sse_s3_default_post_object_authenticated_request(): response = client.get_object(Bucket=bucket_name, Key='foo.txt') body = _get_body(response) eq(body, 'bar') + + +def _test_sse_s3_encrypted_upload(file_size): + """ + Test upload of the given size, specifically requesting sse-s3 encryption. + """ + bucket_name = get_new_bucket() + client = get_client() + + data = 'A'*file_size + response = client.put_object(Bucket=bucket_name, Key='testobj', Body=data, ServerSideEncryption='AES256') + eq(response['ResponseMetadata']['HTTPHeaders']['x-amz-server-side-encryption'], 'AES256') + + response = client.get_object(Bucket=bucket_name, Key='testobj') + eq(response['ResponseMetadata']['HTTPHeaders']['x-amz-server-side-encryption'], 'AES256') + body = _get_body(response) + eq(body, data) + +@attr(resource='object') +@attr(method='put') +@attr(operation='Test 1 byte upload with SSE-S3 encryption') +@attr(assertion='success') +@attr('encryption') +@attr('sse-s3') +def test_sse_s3_encrypted_upload_1b(): + _test_sse_s3_encrypted_upload(1) + +@attr(resource='object') +@attr(method='put') +@attr(operation='Test 1Kb upload with SSE-S3 encryption') +@attr(assertion='success') +@attr('encryption') +@attr('sse-s3') +def test_sse_s3_encrypted_upload_1kb(): + _test_sse_s3_encrypted_upload(1024) + +@attr(resource='object') +@attr(method='put') +@attr(operation='Test 1MB upload with SSE-S3 encryption') +@attr(assertion='success') +@attr('encryption') +@attr('sse-s3') +def test_sse_s3_encrypted_upload_1mb(): + _test_sse_s3_encrypted_upload(1024*1024) + +@attr(resource='object') +@attr(method='put') +@attr(operation='Test 8MB upload with SSE-S3 encryption') +@attr(assertion='success') +@attr('encryption') +@attr('sse-s3') +def test_sse_s3_encrypted_upload_8mb(): + _test_sse_s3_encrypted_upload(8*1024*1024)