|
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