8000 add tests to cover S3 object deletion (#92) · localstack/localstack-java-utils@99435ef · GitHub
[go: up one dir, main page]

Skip to content

Commit 99435ef

Browse files
authored
add tests to cover S3 object deletion (#92)
1 parent 852e9a2 commit 99435ef

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed

src/test/java/cloud/localstack/awssdkv1/S3FeaturesTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static org.junit.Assert.assertEquals;
44
import static org.junit.Assert.assertNotNull;
5+
import static org.junit.Assert.assertThrows;
56

67
import cloud.localstack.*;
78
import cloud.localstack.docker.annotation.LocalstackDockerProperties;
@@ -25,6 +26,7 @@
2526

2627
import com.amazonaws.HttpMethod;
2728
import com.amazonaws.client.builder.AwsClientBuilder;
29+
import com.amazonaws.services.mediastoredata.model.DeleteObjectResult;
2830
import com.amazonaws.services.s3.*;
2931
import com.amazonaws.services.s3.model.*;
3032
import com.amazonaws.services.s3.model.lifecycle.*;
@@ -122,6 +124,42 @@ public void testMetadata() {
122124
Assert.assertEquals(originalMetadata, receivedMetadata);
123125
}
124126

127+
/**
128+
* Test S3 objects deletion
129+
*/
130+
@Test
131+
public void testObjectDeletion() {
132+
AmazonS3 s3 = TestUtils.getClientS3();
133+
String bucketName = UUID.randomUUID().toString();
134+
s3.createBucket(bucketName);
135+
136+
Map<String, String> originalMetadata = new HashMap<String, String>();
137+
originalMetadata.put("key1", "val1");
138+
originalMetadata.put("key_2", "val2");
139+
originalMetadata.put("__key3", "val3");
140+
141+
ObjectMetadata objectMetadata = new ObjectMetadata();
142+
objectMetadata.setUserMetadata(originalMetadata);
143+
144+
String keyName = "my-key-1";
145+
InputStream is = new ByteArrayInputStream("test-string".getBytes(StandardCharsets.UTF_8));
146+
s3.putObject(new PutObjectRequest(bucketName, keyName, is, objectMetadata));
147+
s3.deleteObject(new DeleteObjectRequest(bucketName, keyName));
148+
149+
AmazonS3Exception exception = assertThrows(AmazonS3Exception.class, () -> {
150+
s3.getObject(new GetObjectRequest(bucketName, keyName));
151+
});
152+
Assert.assertEquals(exception.getErrorCode(), "NoSuchKey");
153+
154+
s3.putObject(new PutObjectRequest(bucketName, keyName, is, objectMetadata));
155+
s3.deleteObjects(new DeleteObjectsRequest(bucketName).withKeys(keyName));
156+
157+
AmazonS3Exception exception2 = assertThrows(AmazonS3Exception.class, () -> {
158+
s3.getObject(new GetObjectRequest(bucketName, keyName));
159+
});
160+
Assert.assertEquals(exception2.getErrorCode(), "NoSuchKey");
161+
}
162+
125163
@Test
126164
public void testListNextBatchOfObjects() {
127165
AmazonS3 s3Client = TestUtils.getClientS3();

src/test/java/cloud/localstack/awssdkv2/BasicFeaturesSDKV2Test.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import org.testcontainers.utility.ThrowingFunction;
2020
import software.amazon.awssdk.core.SdkBytes;
2121
import software.amazon.awssdk.core.SdkSystemSetting;
22+
import software.amazon.awssdk.core.async.AsyncRequestBody;
23+
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
2224
import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient;
2325
import software.amazon.awssdk.services.cloudwatch.CloudWatchClient;
2426
import software.amazon.awssdk.services.cloudwatch.model.Dimension;
@@ -55,8 +57,12 @@
5557
import software.amazon.awssdk.services.s3.model.Bucket;
5658
import software.amazon.awssdk.services.s3.model.CreateBucketRequest;
5759
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;
5862
import software.amazon.awssdk.services.s3.model.ListBucketsRequest;
5963
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;
6066
import software.amazon.awssdk.services.secretsmanager.SecretsManagerAsyncClient;
6167
import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
6268
import software.amazon.awssdk.services.secretsmanager.model.CreateSecretRequest;
@@ -82,14 +88,20 @@
8288
import software.amazon.awssdk.services.ssm.model.PutParameterRequest;
8389
import software.amazon.awssdk.services.ssm.model.PutParameterResponse;
8490

91+
import static org.junit.Assert.assertThrows;
92+
8593
import java.nio.ByteBuffer;
8694
import java.time.Instant;
8795
import java.time.ZoneOffset;
8896
import java.time.ZonedDateTime;
8997
import java.time.format.DateTimeFormatter;
9098
import java.util.ArrayList;
99+
import java.util.HashMap;
91100
import java.util.List;
101+
import java.util.Map;
92102
import java.util.UUID;
103+
import java.util.concurrent.CompletableFuture;
104+
import java.util.concurrent.CompletionException;
93105
import java.util.concurrent.TimeUnit;
94106
import java.util.concurrent.atomic.AtomicBoolean;
95107

@@ -620,4 +632,36 @@ public void testIAMListUserPaginationAsync() throws Exception {
620632
Assert.assertTrue(userFound.get());
621633
}
622634

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+
623667
}

0 commit comments

Comments
 (0)
0