This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/main by this push:
     new 77da31b  AWS S3 tests should delete all buckets they create #3167
77da31b is described below

commit 77da31bb255aed1c506397f117fbed7c02684319
Author: Peter Palaga <[email protected]>
AuthorDate: Thu Oct 7 20:13:46 2021 +0200

    AWS S3 tests should delete all buckets they create #3167
---
 .../quarkus/component/aws2/Aws2S3Resource.java     |  36 +++++--
 .../camel/quarkus/component/aws2/Aws2S3Test.java   | 103 +++++++++++----------
 2 files changed, 85 insertions(+), 54 deletions(-)

diff --git 
a/integration-test-groups/aws2/aws2-s3/src/main/java/org/apache/camel/quarkus/component/aws2/Aws2S3Resource.java
 
b/integration-test-groups/aws2/aws2-s3/src/main/java/org/apache/camel/quarkus/component/aws2/Aws2S3Resource.java
index e3794c1..ac0dbe8 100644
--- 
a/integration-test-groups/aws2/aws2-s3/src/main/java/org/apache/camel/quarkus/component/aws2/Aws2S3Resource.java
+++ 
b/integration-test-groups/aws2/aws2-s3/src/main/java/org/apache/camel/quarkus/component/aws2/Aws2S3Resource.java
@@ -114,21 +114,45 @@ public class Aws2S3Resource {
         return Response.noContent().build();
     }
 
+    @Path("s3/bucket/{bucketName}/object/{key}")
+    @DELETE
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response read(@PathParam("bucketName") String bucketName, 
@PathParam("key") String key) throws Exception {
+        producerTemplate.sendBodyAndHeader(
+                componentUri(bucketName, AWS2S3Operations.deleteObject),
+                null,
+                AWS2S3Constants.KEY,
+                key);
+        return Response.noContent().build();
+    }
+
     @Path("s3/object-keys")
     @GET
     @Produces(MediaType.APPLICATION_JSON)
-    public List<String> objectKey(@QueryParam("bucket") String bucket) throws 
Exception {
-        if (bucket == null) {
-            bucket = bucketName;
-        }
-
+    public List<String> objectKey() throws Exception {
         final List<S3Object> objects = (List<S3Object>) 
producerTemplate.requestBody(
-                componentUri(bucket, AWS2S3Operations.listObjects) + 
"&autoCreateBucket=true",
+                componentUri(AWS2S3Operations.listObjects),
                 null,
                 List.class);
         return 
objects.stream().map(S3Object::key).collect(Collectors.toList());
     }
 
+    /**
+     * Do not forget to delete every bucket created through this endpoint 
after the test.
+     *
+     * @param  newBucketName
+     * @return
+     */
+    @Path("s3/autoCreateBucket/{newBucketName}")
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response autoCreateBucket(@PathParam("newBucketName") String 
newBucketName) {
+        producerTemplate.sendBody(
+                componentUri(newBucketName, AWS2S3Operations.listObjects) + 
"&autoCreateBucket=true",
+                null);
+        return Response.noContent().build();
+    }
+
     @Path("s3/upload/{key}")
     @POST
     @Consumes(MediaType.TEXT_PLAIN)
diff --git 
a/integration-test-groups/aws2/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/Aws2S3Test.java
 
b/integration-test-groups/aws2/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/Aws2S3Test.java
index 689c216..33f9b25 100644
--- 
a/integration-test-groups/aws2/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/Aws2S3Test.java
+++ 
b/integration-test-groups/aws2/aws2-s3/src/test/java/org/apache/camel/quarkus/component/aws2/Aws2S3Test.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.quarkus.component.aws2;
 
+import java.util.Locale;
 import java.util.UUID;
 import java.util.stream.Stream;
 
@@ -150,13 +151,14 @@ class Aws2S3Test {
     }
 
     @Test
-    public void copyObject() throws Exception {
+    public void copyObjectDeleteBucket() throws Exception {
         final String oid1 = UUID.randomUUID().toString();
         final String oid2 = UUID.randomUUID().toString();
         final String blobContent = "Hello " + oid1;
-        final String bucket = "mycamel" + UUID.randomUUID().toString();
+        final String destinationBucket = "camel-quarkus-copy-object-"
+                + 
RandomStringUtils.randomAlphanumeric(32).toLowerCase(Locale.ROOT);
 
-        // Create
+        // Create an object to copy
         RestAssured.given()
                 .contentType(ContentType.TEXT)
                 .body(blobContent)
@@ -164,26 +166,49 @@ class Aws2S3Test {
                 .then()
                 .statusCode(201);
 
-        // Check the dest bucket does not contain oid2
-        final String[] objects = getAllObjects(bucket);
-        Assertions.assertTrue(Stream.of(objects).noneMatch(key -> 
key.equals(oid2)));
+        try {
+            autoCreateBucket(destinationBucket);
 
-        // Copy
-        RestAssured.given()
-                .contentType(ContentType.URLENC)
-                .formParam("dest_key", oid2)
-                .formParam("dest_bucket", bucket)
-                .post("/aws2/s3/copy/" + oid1)
-                .then()
-                .statusCode(204);
+            // Make sure the bucket was created
+            String[] buckets = getAllBuckets();
+            Assertions.assertTrue(Stream.of(buckets).anyMatch(key -> 
key.equals(destinationBucket)));
 
-        // Verify the object
-        RestAssured.given()
-                .contentType(ContentType.TEXT)
-                .get("/aws2/s3/object/" + oid2 + "?bucket=" + bucket)
-                .then()
-                .statusCode(200)
-                .body(is(blobContent));
+            // Copy
+            RestAssured.given()
+                    .contentType(ContentType.URLENC)
+                    .formParam("dest_key", oid2)
+                    .formParam("dest_bucket", destinationBucket)
+                    .post("/aws2/s3/copy/" + oid1)
+                    .then()
+                    .statusCode(204);
+
+            // Verify the object
+            RestAssured.given()
+                    .contentType(ContentType.TEXT)
+                    .get("/aws2/s3/object/" + oid2 + "?bucket=" + 
destinationBucket)
+                    .then()
+                    .statusCode(200)
+                    .body(is(blobContent));
+
+        } finally {
+            // Delete the object before deleting the bucket
+            try {
+                RestAssured.delete("/aws2/s3/bucket/" + destinationBucket + 
"/object/" + oid2)
+                        .then()
+                        .statusCode(204);
+            } catch (Exception ignored) {
+            }
+
+            // Delete the bucket
+            RestAssured.delete("/aws2/s3/bucket/" + destinationBucket)
+                    .then()
+                    .statusCode(204);
+
+            // Make sure destinationBucket was really deleted
+            final String[] buckets = getAllBuckets();
+            Assertions.assertTrue(Stream.of(buckets).noneMatch(key -> 
key.equals(destinationBucket)));
+
+        }
 
     }
 
@@ -195,24 +220,6 @@ class Aws2S3Test {
     }
 
     @Test
-    void deleteBucket() throws Exception {
-        final String bucket = "mycamel-delete" + UUID.randomUUID().toString();
-
-        String[] objects = getAllObjects(bucket);
-        Assertions.assertTrue(objects.length == 0);
-
-        String[] buckets = getAllBuckets();
-        Assertions.assertTrue(Stream.of(buckets).anyMatch(key -> 
key.equals(bucket)));
-
-        RestAssured.delete("/aws2/s3/bucket/" + bucket)
-                .then()
-                .statusCode(204);
-
-        buckets = getAllBuckets();
-        Assertions.assertTrue(Stream.of(buckets).noneMatch(key -> 
key.equals(bucket)));
-    }
-
-    @Test
     public void downloadLink() throws Exception {
         final String oid = UUID.randomUUID().toString();
         final String blobContent = "Hello " + oid;
@@ -256,16 +263,16 @@ class Aws2S3Test {
                 .statusCode(201);
     }
 
-    private String[] getAllObjects(String bucket) {
-        final String[] objects = RestAssured.given()
-                .param("bucket", bucket)
-                .get("/aws2/s3/object-keys")
+    /**
+     * Do not forget to delete every bucket you create!
+     *
+     * @param newBucketName
+     */
+    private void autoCreateBucket(String newBucketName) {
+        RestAssured.given()
+                .get("/aws2/s3/autoCreateBucket/" + newBucketName)
                 .then()
-                .statusCode(200)
-                .extract()
-                .body().as(String[].class);
-
-        return objects;
+                .statusCode(204);
     }
 
     private String[] getAllBuckets() {

Reply via email to