This is an automated email from the ASF dual-hosted git repository. ppalaga pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 757529d29bf329c256612e07b111241010ffcac7 Author: James Netherton <[email protected]> AuthorDate: Mon Sep 7 07:44:40 2020 +0100 Dropbox native support Fixes #1577 --- docs/modules/ROOT/pages/reference/components.adoc | 4 +- .../ROOT/pages/reference/extensions/dropbox.adoc | 8 +- docs/modules/ROOT/pages/reference/index.adoc | 4 +- .../component/dropbox/it/DropboxResource.java | 51 ---------- extensions-jvm/pom.xml | 1 - .../dropbox/deployment/pom.xml | 0 .../dropbox/deployment/DropboxProcessor.java | 31 ++++--- {extensions-jvm => extensions}/dropbox/pom.xml | 1 - .../dropbox/runtime/pom.xml | 0 .../main/resources/META-INF/quarkus-extension.yaml | 3 +- extensions/pom.xml | 1 + integration-tests/dropbox/README.adoc | 12 +++ .../dropbox}/pom.xml | 62 ++++++++++--- .../component/dropbox/it/DropboxResource.java | 103 +++++++++++++++++++++ .../quarkus/component/dropbox/it/DropboxIT.java | 19 ++-- .../quarkus/component/dropbox/it/DropboxTest.java | 36 ++++++- integration-tests/pom.xml | 1 + tooling/scripts/test-categories.yaml | 1 + 18 files changed, 232 insertions(+), 106 deletions(-) diff --git a/docs/modules/ROOT/pages/reference/components.adoc b/docs/modules/ROOT/pages/reference/components.adoc index eace763..b030c34 100644 --- a/docs/modules/ROOT/pages/reference/components.adoc +++ b/docs/modules/ROOT/pages/reference/components.adoc @@ -280,8 +280,8 @@ Stable | 1.0.0 | Map between Java beans using the Dozer mapping library. | xref:reference/extensions/drill.adoc[Drill] | [.camel-element-artifact]##camel-quarkus-drill## | [.camel-element-JVM]##JVM## + Preview | 1.1.0 | Perform queries against an Apache Drill cluster. -| xref:reference/extensions/dropbox.adoc[Dropbox] | [.camel-element-artifact]##camel-quarkus-dropbox## | [.camel-element-JVM]##JVM## + -Preview | 1.1.0 | Upload, download and manage files, folders, groups, collaborations, etc on Dropbox. +| xref:reference/extensions/dropbox.adoc[Dropbox] | [.camel-element-artifact]##camel-quarkus-dropbox## | [.camel-element-Native]##Native## + +Stable | 1.1.0 | Upload, download and manage files, folders, groups, collaborations, etc on Dropbox. | xref:reference/extensions/ehcache.adoc[Ehcache] | [.camel-element-artifact]##camel-quarkus-ehcache## | [.camel-element-JVM]##JVM## + Preview | 1.1.0 | Perform caching operations using Ehcache. diff --git a/docs/modules/ROOT/pages/reference/extensions/dropbox.adoc b/docs/modules/ROOT/pages/reference/extensions/dropbox.adoc index 0256dfb..36a6f10 100644 --- a/docs/modules/ROOT/pages/reference/extensions/dropbox.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/dropbox.adoc @@ -6,7 +6,7 @@ :page-aliases: extensions/dropbox.adoc [.badges] -[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-unsupported]##unsupported## +[.badge-key]##Since Camel Quarkus##[.badge-version]##1.1.0## [.badge-key]##JVM##[.badge-supported]##supported## [.badge-key]##Native##[.badge-supported]##supported## Upload, download and manage files, folders, groups, collaborations, etc on Dropbox. @@ -27,3 +27,9 @@ Please refer to the above link for usage and configuration details. ---- Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications. + +== SSL in native mode + +This extension auto-enables SSL support in native mode. Hence you do not need to add +`quarkus.ssl.native=true` to your `application.properties` yourself. See also +https://quarkus.io/guides/native-and-ssl[Quarkus SSL guide]. diff --git a/docs/modules/ROOT/pages/reference/index.adoc b/docs/modules/ROOT/pages/reference/index.adoc index 6881fd5..cb4b585 100644 --- a/docs/modules/ROOT/pages/reference/index.adoc +++ b/docs/modules/ROOT/pages/reference/index.adoc @@ -287,8 +287,8 @@ Stable | 1.0.0 | Map between Java beans using the Dozer mapping library. | xref:reference/extensions/drill.adoc[Drill] | camel-quarkus-drill | [.camel-element-JVM]##JVM## + Preview | 1.1.0 | Perform queries against an Apache Drill cluster. -| xref:reference/extensions/dropbox.adoc[Dropbox] | camel-quarkus-dropbox | [.camel-element-JVM]##JVM## + -Preview | 1.1.0 | Upload, download and manage files, folders, groups, collaborations, etc on Dropbox. +| xref:reference/extensions/dropbox.adoc[Dropbox] | camel-quarkus-dropbox | [.camel-element-Native]##Native## + +Stable | 1.1.0 | Upload, download and manage files, folders, groups, collaborations, etc on Dropbox. | xref:reference/extensions/ehcache.adoc[Ehcache] | camel-quarkus-ehcache | [.camel-element-JVM]##JVM## + Preview | 1.1.0 | Perform caching operations using Ehcache. diff --git a/extensions-jvm/dropbox/integration-test/src/main/java/org/apache/camel/quarkus/component/dropbox/it/DropboxResource.java b/extensions-jvm/dropbox/integration-test/src/main/java/org/apache/camel/quarkus/component/dropbox/it/DropboxResource.java deleted file mode 100644 index e0db93d..0000000 --- a/extensions-jvm/dropbox/integration-test/src/main/java/org/apache/camel/quarkus/component/dropbox/it/DropboxResource.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.quarkus.component.dropbox.it; - -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.apache.camel.CamelContext; -import org.jboss.logging.Logger; - -@Path("/dropbox") -@ApplicationScoped -public class DropboxResource { - - private static final Logger LOG = Logger.getLogger(DropboxResource.class); - - private static final String COMPONENT_DROPBOX = "dropbox"; - @Inject - CamelContext context; - - @Path("/load/component/dropbox") - @GET - @Produces(MediaType.TEXT_PLAIN) - public Response loadComponentDropbox() throws Exception { - /* This is an autogenerated test */ - if (context.getComponent(COMPONENT_DROPBOX) != null) { - return Response.ok().build(); - } - LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_DROPBOX); - return Response.status(500, COMPONENT_DROPBOX + " could not be loaded from the Camel context").build(); - } -} diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml index ba8d5de..f8852af 100644 --- a/extensions-jvm/pom.xml +++ b/extensions-jvm/pom.xml @@ -64,7 +64,6 @@ <module>djl</module> <module>dns</module> <module>drill</module> - <module>dropbox</module> <module>ehcache</module> <module>elsql</module> <module>etcd</module> diff --git a/extensions-jvm/dropbox/deployment/pom.xml b/extensions/dropbox/deployment/pom.xml similarity index 100% rename from extensions-jvm/dropbox/deployment/pom.xml rename to extensions/dropbox/deployment/pom.xml diff --git a/extensions-jvm/dropbox/deployment/src/main/java/org/apache/camel/quarkus/component/dropbox/deployment/DropboxProcessor.java b/extensions/dropbox/deployment/src/main/java/org/apache/camel/quarkus/component/dropbox/deployment/DropboxProcessor.java similarity index 58% rename from extensions-jvm/dropbox/deployment/src/main/java/org/apache/camel/quarkus/component/dropbox/deployment/DropboxProcessor.java rename to extensions/dropbox/deployment/src/main/java/org/apache/camel/quarkus/component/dropbox/deployment/DropboxProcessor.java index 2a5a7b6..745ed30 100644 --- a/extensions-jvm/dropbox/deployment/src/main/java/org/apache/camel/quarkus/component/dropbox/deployment/DropboxProcessor.java +++ b/extensions/dropbox/deployment/src/main/java/org/apache/camel/quarkus/component/dropbox/deployment/DropboxProcessor.java @@ -17,16 +17,13 @@ package org.apache.camel.quarkus.component.dropbox.deployment; import io.quarkus.deployment.annotations.BuildStep; -import io.quarkus.deployment.annotations.ExecutionTime; -import io.quarkus.deployment.annotations.Record; +import io.quarkus.deployment.builditem.ExtensionSslNativeSupportBuildItem; import io.quarkus.deployment.builditem.FeatureBuildItem; -import io.quarkus.deployment.pkg.steps.NativeBuild; -import org.apache.camel.quarkus.core.JvmOnlyRecorder; -import org.jboss.logging.Logger; +import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem; +import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem; class DropboxProcessor { - private static final Logger LOG = Logger.getLogger(DropboxProcessor.class); private static final String FEATURE = "camel-dropbox"; @BuildStep @@ -34,13 +31,19 @@ class DropboxProcessor { return new FeatureBuildItem(FEATURE); } - /** - * Remove this once this extension starts supporting the native mode. - */ - @BuildStep(onlyIf = NativeBuild.class) - @Record(value = ExecutionTime.RUNTIME_INIT) - void warnJvmInNative(JvmOnlyRecorder recorder) { - JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time - recorder.warnJvmInNative(FEATURE); // warn at runtime + @BuildStep + ExtensionSslNativeSupportBuildItem activateSslNativeSupport() { + return new ExtensionSslNativeSupportBuildItem(FEATURE); + } + + @BuildStep + RuntimeInitializedClassBuildItem runtimeInitializedClasses() { + return new RuntimeInitializedClassBuildItem("com.dropbox.core.http.SSLConfig"); + } + + @BuildStep + NativeImageResourceBuildItem nativeImageResources() { + // Required by com.dropbox.core.http.SSLConfig + return new NativeImageResourceBuildItem("com/dropbox/core/trusted-certs.raw", "com/dropbox/core/sdk-version.txt"); } } diff --git a/extensions-jvm/dropbox/pom.xml b/extensions/dropbox/pom.xml similarity index 97% rename from extensions-jvm/dropbox/pom.xml rename to extensions/dropbox/pom.xml index 20cf3b6..144a8d5 100644 --- a/extensions-jvm/dropbox/pom.xml +++ b/extensions/dropbox/pom.xml @@ -35,6 +35,5 @@ <modules> <module>deployment</module> <module>runtime</module> - <module>integration-test</module> </modules> </project> diff --git a/extensions-jvm/dropbox/runtime/pom.xml b/extensions/dropbox/runtime/pom.xml similarity index 100% rename from extensions-jvm/dropbox/runtime/pom.xml rename to extensions/dropbox/runtime/pom.xml diff --git a/extensions-jvm/dropbox/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/dropbox/runtime/src/main/resources/META-INF/quarkus-extension.yaml similarity index 97% rename from extensions-jvm/dropbox/runtime/src/main/resources/META-INF/quarkus-extension.yaml rename to extensions/dropbox/runtime/src/main/resources/META-INF/quarkus-extension.yaml index 86854d4..040c009 100644 --- a/extensions-jvm/dropbox/runtime/src/main/resources/META-INF/quarkus-extension.yaml +++ b/extensions/dropbox/runtime/src/main/resources/META-INF/quarkus-extension.yaml @@ -24,9 +24,8 @@ name: "Camel Dropbox" description: "Upload, download and manage files, folders, groups, collaborations, etc on Dropbox" metadata: - unlisted: true guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/dropbox.html" categories: - "integration" status: - - "preview" + - "stable" diff --git a/extensions/pom.xml b/extensions/pom.xml index db5b167..9cb288c 100644 --- a/extensions/pom.xml +++ b/extensions/pom.xml @@ -88,6 +88,7 @@ <module>debezium-sqlserver</module> <module>direct</module> <module>dozer</module> + <module>dropbox</module> <module>elasticsearch-rest</module> <module>endpointdsl</module> <module>exec</module> diff --git a/integration-tests/dropbox/README.adoc b/integration-tests/dropbox/README.adoc new file mode 100644 index 0000000..25cfaca --- /dev/null +++ b/integration-tests/dropbox/README.adoc @@ -0,0 +1,12 @@ +== Camel Quarkus Dropbox Integration Tests + +To run the Dropbox integration tests, you need a valid Dropbox https://www.dropbox.com/developers[developer account]. Then from +the developer console, create a new app and make a note of the access token. + +Then set the following environment variables. Note that `DROPBOX_CLIENT_IDENTIFIER` should be set to the name of your Dropbox app: + +[source,shell] +---- +export DROPBOX_ACCESS_TOKEN=your-access-token +export DROPBOX_CLIENT_IDENTIFIER=your-client-identifier +---- diff --git a/extensions-jvm/dropbox/integration-test/pom.xml b/integration-tests/dropbox/pom.xml similarity index 61% rename from extensions-jvm/dropbox/integration-test/pom.xml rename to integration-tests/dropbox/pom.xml index eee158a..464f892 100644 --- a/extensions-jvm/dropbox/integration-test/pom.xml +++ b/integration-tests/dropbox/pom.xml @@ -23,25 +23,14 @@ <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-build-parent-it</artifactId> + <artifactId>camel-quarkus-integration-tests</artifactId> <version>1.1.0-SNAPSHOT</version> - <relativePath>../../../poms/build-parent-it/pom.xml</relativePath> </parent> - <artifactId>camel-quarkus-dropbox-integration-test</artifactId> - <name>Camel Quarkus :: Dropbox :: Integration Test</name> + <artifactId>camel-quarkus-integration-test-dropbox</artifactId> + <name>Camel Quarkus :: Integration Tests :: Dropbox</name> <description>Integration tests for Camel Quarkus Dropbox extension</description> - <properties> - <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd --> - <!-- The following rule tells mvnd to build the listed deployment modules before this module. --> - <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not --> - <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. --> - <!-- Please update the rule whenever you change the dependencies of this module by running --> - <!-- mvn process-resources -Pformat from the root directory --> - <mvnd.builder.rule>camel-quarkus-dropbox-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule> - </properties> - <dependencyManagement> <dependencies> <dependency> @@ -75,6 +64,21 @@ <artifactId>rest-assured</artifactId> <scope>test</scope> </dependency> + + <!-- The following dependencies guarantee that this module is built after them. You can update them by runing `mvn process-resources -Pformat -N` from the source tree root directory --> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-dropbox-deployment</artifactId> + <version>${project.version}</version> + <type>pom</type> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> </dependencies> <build> @@ -92,4 +96,34 @@ </plugin> </plugins> </build> + + <profiles> + <profile> + <id>native</id> + <activation> + <property> + <name>native</name> + </property> + </activation> + <properties> + <quarkus.package.type>native</quarkus.package.type> + </properties> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>integration-test</goal> + <goal>verify</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project> diff --git a/integration-tests/dropbox/src/main/java/org/apache/camel/quarkus/component/dropbox/it/DropboxResource.java b/integration-tests/dropbox/src/main/java/org/apache/camel/quarkus/component/dropbox/it/DropboxResource.java new file mode 100644 index 0000000..c2d504d --- /dev/null +++ b/integration-tests/dropbox/src/main/java/org/apache/camel/quarkus/component/dropbox/it/DropboxResource.java @@ -0,0 +1,103 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.quarkus.component.dropbox.it; + +import java.net.URI; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; + +import javax.inject.Inject; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import com.dropbox.core.v2.files.DownloadErrorException; +import org.apache.camel.CamelExecutionException; +import org.apache.camel.ProducerTemplate; + +import static org.apache.camel.component.dropbox.util.DropboxConstants.HEADER_PUT_FILE_NAME; + +@Path("/dropbox") +public class DropboxResource { + + public static final String REMOTE_PATH = "/camel/quarkus/"; + public static final String FILE_NAME = "test.txt"; + public static final String FILE_CONTENT = "Hello Camel Quarkus DropBox"; + + @Inject + ProducerTemplate producerTemplate; + + @Path("/create") + @POST + @Consumes(MediaType.TEXT_PLAIN) + @Produces(MediaType.TEXT_PLAIN) + public Response createFile() throws Exception { + java.nio.file.Path path = Files.write(Paths.get("target", FILE_NAME), FILE_CONTENT.getBytes(StandardCharsets.UTF_8)); + String result = producerTemplate.requestBodyAndHeader( + "dropbox://put?uploadMode=add&accessToken={{DROPBOX_ACCESS_TOKEN}}&clientIdentifier={{DROPBOX_CLIENT_IDENTIFIER}}&localPath=" + + path.toString() + + "&remotePath=" + REMOTE_PATH, + null, + HEADER_PUT_FILE_NAME, FILE_NAME, String.class); + return Response + .created(new URI("https://camel.apache.org/")) + .entity(result) + .build(); + } + + @Path("/read") + @GET + @Produces(MediaType.TEXT_PLAIN) + public Response readFile() { + try { + String content = producerTemplate.requestBody( + "dropbox://get?accessToken={{DROPBOX_ACCESS_TOKEN}}&clientIdentifier={{DROPBOX_CLIENT_IDENTIFIER}}&remotePath=" + + REMOTE_PATH + + FILE_NAME, + null, + String.class); + if (content != null) { + return Response.ok(content).build(); + } else { + return Response.status(Response.Status.NOT_FOUND).build(); + } + } catch (CamelExecutionException e) { + Exception exchangeException = e.getExchange().getException(); + if (exchangeException != null && exchangeException.getCause() instanceof DownloadErrorException) { + return Response.status(Response.Status.NOT_FOUND).build(); + } + throw e; + } + } + + @Path("/delete") + @DELETE + public Response deleteFile() { + producerTemplate + .requestBody( + "dropbox://del?accessToken={{DROPBOX_ACCESS_TOKEN}}&clientIdentifier={{DROPBOX_CLIENT_IDENTIFIER}}&remotePath=" + + REMOTE_PATH + FILE_NAME, + (Object) null); + return Response.status(Response.Status.NO_CONTENT).build(); + } +} diff --git a/extensions-jvm/dropbox/integration-test/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxTest.java b/integration-tests/dropbox/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxIT.java similarity index 70% copy from extensions-jvm/dropbox/integration-test/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxTest.java copy to integration-tests/dropbox/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxIT.java index 802a3e6..cdc354e 100644 --- a/extensions-jvm/dropbox/integration-test/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxTest.java +++ b/integration-tests/dropbox/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxIT.java @@ -16,19 +16,12 @@ */ package org.apache.camel.quarkus.component.dropbox.it; -import io.quarkus.test.junit.QuarkusTest; -import io.restassured.RestAssured; -import org.junit.jupiter.api.Test; +import io.quarkus.test.junit.NativeImageTest; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; -@QuarkusTest -class DropboxTest { - - @Test - public void loadComponentDropbox() { - /* A simple autogenerated test */ - RestAssured.get("/dropbox/load/component/dropbox") - .then() - .statusCode(200); - } +@EnabledIfEnvironmentVariable(named = "DROPBOX_ACCESS_TOKEN", matches = ".+") +@EnabledIfEnvironmentVariable(named = "DROPBOX_CLIENT_IDENTIFIER", matches = ".+") +@NativeImageTest +class DropboxIT extends DropboxTest { } diff --git a/extensions-jvm/dropbox/integration-test/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxTest.java b/integration-tests/dropbox/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxTest.java similarity index 50% rename from extensions-jvm/dropbox/integration-test/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxTest.java rename to integration-tests/dropbox/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxTest.java index 802a3e6..b9e4f5a 100644 --- a/extensions-jvm/dropbox/integration-test/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxTest.java +++ b/integration-tests/dropbox/src/test/java/org/apache/camel/quarkus/component/dropbox/it/DropboxTest.java @@ -18,17 +18,43 @@ package org.apache.camel.quarkus.component.dropbox.it; import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; +import io.restassured.http.ContentType; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; +import static org.hamcrest.Matchers.is; + +@EnabledIfEnvironmentVariable(named = "DROPBOX_ACCESS_TOKEN", matches = ".+") +@EnabledIfEnvironmentVariable(named = "DROPBOX_CLIENT_IDENTIFIER", matches = ".+") @QuarkusTest class DropboxTest { @Test - public void loadComponentDropbox() { - /* A simple autogenerated test */ - RestAssured.get("/dropbox/load/component/dropbox") + public void testDropboxComponent() { + // Create + RestAssured.given() + .contentType(ContentType.TEXT) + .post("/dropbox/create") .then() - .statusCode(200); - } + .statusCode(201); + + // Read + RestAssured.given() + .get("/dropbox/read") + .then() + .statusCode(200) + .body(is(DropboxResource.FILE_CONTENT)); + // Delete + RestAssured.given() + .delete("/dropbox/delete") + .then() + .statusCode(204); + + // Verify deletion + RestAssured.given() + .get("/dropbox/read") + .then() + .statusCode(404); + } } diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index fa41cd9..f55637b 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -81,6 +81,7 @@ <module>dataformats-json</module> <module>debezium</module> <module>dozer</module> + <module>dropbox</module> <module>elasticsearch-rest</module> <module>exec</module> <module>fhir</module> diff --git a/tooling/scripts/test-categories.yaml b/tooling/scripts/test-categories.yaml index 0665ab8..b07a6b1 100644 --- a/tooling/scripts/test-categories.yaml +++ b/tooling/scripts/test-categories.yaml @@ -70,6 +70,7 @@ xml-json-olingo4: - rest-binding-mode-xml - xml - dataformats-json + - dropbox - olingo4 dozer-ispn-social: - dozer
