diff --git a/boto3/data/resources/s3-2006-03-01.resources.json b/boto3/data/resources/s3-2006-03-01.resources.json index 508a9a9d87..684caa2b3a 100644 --- a/boto3/data/resources/s3-2006-03-01.resources.json +++ b/boto3/data/resources/s3-2006-03-01.resources.json @@ -698,8 +698,8 @@ "type": "MultipartUploadPart", "identifiers": [ { "target": "BucketName", "source": "identifier", "name": "BucketName" }, - { "target": "MultipartUploadId", "source": "identifier", "name": "Id" }, { "target": "ObjectKey", "source": "identifier", "name": "ObjectKey" }, + { "target": "MultipartUploadId", "source": "identifier", "name": "Id" }, { "target": "PartNumber", "source": "input" } ] } @@ -770,8 +770,8 @@ "type": "MultipartUpload", "identifiers": [ { "target": "BucketName", "source": "identifier", "name": "BucketName" }, - { "target": "Id", "source": "identifier", "name": "MultipartUploadId" }, - { "target": "ObjectKey", "source": "identifier", "name": "ObjectKey" } + { "target": "ObjectKey", "source": "identifier", "name": "ObjectKey" }, + { "target": "Id", "source": "identifier", "name": "MultipartUploadId" } ] } } diff --git a/tests/integration/test_s3.py b/tests/integration/test_s3.py index affb800c29..ef4ac3b057 100644 --- a/tests/integration/test_s3.py +++ b/tests/integration/test_s3.py @@ -92,3 +92,32 @@ def test_can_create_object_directly(self): self.assertEqual(obj.bucket_name, self.bucket_name) self.assertEqual(obj.key, 'test.txt') + + def test_s3_multipart(self): + # Create the bucket + bucket = self.create_bucket_resource(self.bucket_name) + bucket.wait_until_exists() + + # Create the multipart upload + mpu = bucket.Object('mp-test.txt').initiate_multipart_upload() + self.addCleanup(mpu.abort) + + # Create and upload a part + part = mpu.Part(1) + response = part.upload(Body='hello, world!') + + # Complete the upload, which requires info on all of the parts + part_info = { + 'Parts': [ + { + 'PartNumber': 1, + 'ETag': response['ETag'] + } + ] + } + + mpu.complete(MultipartUpload=part_info) + self.addCleanup(bucket.Object('mp-test.txt').delete) + + contents = bucket.Object('mp-test.txt').get()['Body'].read() + self.assertEqual(contents, b'hello, world!')