diff --git a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/pom.xml b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/pom.xml index 969f7751d2e..6d8c61a0854 100644 --- a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/pom.xml +++ b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/pom.xml @@ -25,6 +25,20 @@ io.quarkus quarkus-resteasy-jackson + + io.quarkus + quarkus-smallrye-openapi + + + + io.quarkiverse.asyncapi + quarkus-asyncapi + + + + io.quarkus + quarkus-smallrye-reactive-messaging-kafka + io.grpc diff --git a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/main/resources/specs/asyncAPI.yaml b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/main/resources/specs/asyncAPI.yaml new file mode 100644 index 00000000000..7b39a29ac50 --- /dev/null +++ b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/main/resources/specs/asyncAPI.yaml @@ -0,0 +1,40 @@ +asyncapi: '2.0.0' +id: 'oneConsumer' +info: + title: Kafka Application + version: '1.0.0' + description: Kafka Application + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 +servers: + production: + url: localhost:9092 + description: Development server + protocol: kafka + protocolVersion: '1.0.0' +channels: + wait: + description: A message channel + subscribe: + operationId: wait + summary: Get messages + message: + $ref: '#/components/messages/message' + publish: + operationId: sendWait + summary: Send messages + message: + $ref: '#/components/messages/message' +components: + messages: + message: + name: message + title: A message + summary: A message + contentType: application/json + payload: + $ref: "#/components/schemas/message" + schemas: + message: + type: object diff --git a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/LiveReloadProcessorTest.java b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/LiveReloadProcessorTest.java index 32d1ad48896..3544064f624 100644 --- a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/LiveReloadProcessorTest.java +++ b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/java/org/kie/kogito/quarkus/serverless/workflow/deployment/livereload/LiveReloadProcessorTest.java @@ -20,11 +20,13 @@ import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Collections; import java.util.Objects; import java.util.stream.Collectors; import java.util.stream.Stream; import org.jboss.shrinkwrap.api.asset.StringAsset; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.kie.kogito.test.utils.SocketUtils; @@ -35,6 +37,7 @@ import io.restassured.http.ContentType; import static io.restassured.RestAssured.given; +import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.CoreMatchers.containsString; public class LiveReloadProcessorTest { @@ -117,4 +120,31 @@ void testGrpc() throws InterruptedException, IOException { server.awaitTermination(); } } + + @Test + @Disabled("Disabled until https://issues.redhat.com/browse/KOGITO-9614 is resolved") + void testAsyncApi() throws IOException { + given() + .contentType(ContentType.JSON) + .when() + .body(Collections.singletonMap("workflowdata", Collections.emptyMap())) + .post("/asyncEventPublisher") + .then() + .statusCode(404); + + try (FileInputStream inputStream = new FileInputStream("src/test/resources/asyncPublisher.sw.json")) { + test.addResourceFile("asyncPublisher.sw.json", new String(Objects.requireNonNull(inputStream).readAllBytes())); + } + + String id = given() + .contentType(ContentType.JSON) + .when() + .body(Collections.singletonMap("workflowdata", Collections.emptyMap())) + .post("/asyncEventPublisher") + .then() + .statusCode(201) + .extract().path("id"); + + assertThat(id).isNotBlank(); + } } diff --git a/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/resources/asyncPublisher.sw.json b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/resources/asyncPublisher.sw.json new file mode 100644 index 00000000000..92643e41450 --- /dev/null +++ b/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow-extension-live-reload-test/src/test/resources/asyncPublisher.sw.json @@ -0,0 +1,27 @@ +{ + "id": "asyncEventPublisher", + "version": "1.0", + "name": "Workflow async consumer test", + "description": "An test that verifies an async api spec file with a publish channel is really publishing", + "start": "publishEvent", + "functions": [ + { + "name": "publishEvent", + "type": "asyncapi", + "operation": "specs/asyncAPI.yaml#sendWait" + } + ], + "states": [ + { + "name": "publishEvent", + "type": "operation", + "actions": [ + { + "name": "publishEvent", + "functionRef": "publishEvent" + } + ], + "end": true + } + ] +} \ No newline at end of file