|
19 | 19 | import org.testcontainers.utility.ThrowingFunction; |
20 | 20 | import software.amazon.awssdk.core.SdkBytes; |
21 | 21 | import software.amazon.awssdk.core.SdkSystemSetting; |
| 22 | +import software.amazon.awssdk.core.async.AsyncRequestBody; |
| 23 | +import software.amazon.awssdk.core.async.AsyncResponseTransformer; |
22 | 24 | import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; |
23 | 25 | import software.amazon.awssdk.services.cloudwatch.CloudWatchClient; |
24 | 26 | import software.amazon.awssdk.services.cloudwatch.model.Dimension; |
|
55 | 57 | import software.amazon.awssdk.services.s3.model.Bucket; |
56 | 58 | import software.amazon.awssdk.services.s3.model.CreateBucketRequest; |
57 | 59 | import software.amazon.awssdk.services.s3.model.CreateBucketResponse; |
| 60 | +import software.amazon.awssdk.services.s3.model.DeleteObjectRequest; |
| 61 | +import software.amazon.awssdk.services.s3.model.GetObjectRequest; |
58 | 62 | import software.amazon.awssdk.services.s3.model.ListBucketsRequest; |
59 | 63 | import software.amazon.awssdk.services.s3.model.ListBucketsResponse; |
| 64 | +import software.amazon.awssdk.services.s3.model.PutObjectRequest; |
| 65 | +import software.amazon.awssdk.services.s3.model.S3Exception; |
60 | 66 | import software.amazon.awssdk.services.secretsmanager.SecretsManagerAsyncClient; |
61 | 67 | import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient; |
62 | 68 | import software.amazon.awssdk.services.secretsmanager.model.CreateSecretRequest; |
|
82 | 88 | import software.amazon.awssdk.services.ssm.model.PutParameterRequest; |
83 | 89 | import software.amazon.awssdk.services.ssm.model.PutParameterResponse; |
84 | 90 |
|
| 91 | +import static org.junit.Assert.assertThrows; |
| 92 | + |
85 | 93 | import java.nio.ByteBuffer; |
86 | 94 | import java.time.Instant; |
87 | 95 | import java.time.ZoneOffset; |
88 | 96 | import java.time.ZonedDateTime; |
89 | 97 | import java.time.format.DateTimeFormatter; |
90 | 98 | import java.util.ArrayList; |
| 99 | +import java.util.HashMap; |
91 | 100 | import java.util.List; |
| 101 | +import java.util.Map; |
92 | 102 | import java.util.UUID; |
| 103 | +import java.util.concurrent.CompletableFuture; |
| 104 | +import java.util.concurrent.CompletionException; |
93 | 105 | import java.util.concurrent.TimeUnit; |
94 | 106 | import java.util.concurrent.atomic.AtomicBoolean; |
95 | 107 |
|
@@ -620,4 +632,36 @@ public void testIAMListUserPaginationAsync() throws Exception { |
620 | 632 | Assert.assertTrue(userFound.get()); |
621 | 633 | } |
622 | 634 |
|
| 635 | + @Test |
| 636 | + public void testS3ObjectDeletion() { |
| 637 | + S3AsyncClient s3 = TestUtils.getClientS3AsyncV2(); |
| 638 | + |
| 639 | + String bucketName = UUID.randomUUID().toString(); |
| 640 | + CreateBucketRequest createBucketRequest = CreateBucketRequest.builder().bucket(bucketName).build(); |
| 641 | + s3.createBucket(createBucketRequest).join(); |
| 642 | + |
| 643 | + String keyName = "my-key-1"; |
| 644 | + PutObjectRequest objectRequest = PutObjectRequest.builder().bucket(bucketName).key(keyName).build(); |
| 645 | + AsyncRequestBody requestBody = AsyncRequestBody.fromBytes("data".getBytes()); |
| 646 | + s3.putObject(objectRequest, requestBody).join(); |
| 647 | + |
| 648 | + DeleteObjectRequest deleteObjectRequest = DeleteObjectRequest.builder().bucket(bucketName).key(keyName).build(); |
| 649 | + s3.deleteObject(deleteObjectRequest).join(); |
| 650 | + |
| 651 | + GetObjectRequest getObjectRequest = GetObjectRequest.builder().bucket(bucketName).key(keyName).build(); |
| 652 | + |
| 653 | + CompletionException exception = assertThrows(CompletionException.class, () -> { |
| 654 | + s3.getObject(getObjectRequest, AsyncResponseTransformer.toBytes()).join(); |
| 655 | + }); |
| 656 | + Assert.assertTrue(exception.getCause().getMessage().contains("The specified key does not exist.")); |
| 657 | + |
| 658 | + s3.putObject(objectRequest, requestBody).join(); |
| 659 | + s3.deleteObject(deleteObjectRequest).join(); |
| 660 | + |
| 661 | + CompletionException exception2 = assertThrows(CompletionException.class, () -> { |
| 662 | + s3.getObject(getObjectRequest, AsyncResponseTransformer.toBytes()).join(); |
| 663 | + }); |
| 664 | + Assert.assertTrue(exception2.getCause().getMessage().contains("The specified key does not exist.")); |
| 665 | + } |
| 666 | + |
623 | 667 | } |
0 commit comments