This is an automated email from the ASF dual-hosted git repository.
jamesnetherton 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 05d223a481 Extend validator test coverage
05d223a481 is described below
commit 05d223a48158a4e1cc9a7092912300bd5ee5bf05
Author: JiriOndrusek <[email protected]>
AuthorDate: Thu Sep 5 15:16:20 2024 +0200
Extend validator test coverage
---
.../component/validator/it/ValidatorResource.java | 24 +++++++-
.../validator/it/ValidatorRouteBuilder.java | 9 +++
.../component/validator/it/ValidatorTest.java | 70 +++++++++++++++++++++-
3 files changed, 98 insertions(+), 5 deletions(-)
diff --git
a/integration-tests/validator/src/main/java/org/apache/camel/quarkus/component/validator/it/ValidatorResource.java
b/integration-tests/validator/src/main/java/org/apache/camel/quarkus/component/validator/it/ValidatorResource.java
index e54f71e44e..6da076d37c 100644
---
a/integration-tests/validator/src/main/java/org/apache/camel/quarkus/component/validator/it/ValidatorResource.java
+++
b/integration-tests/validator/src/main/java/org/apache/camel/quarkus/component/validator/it/ValidatorResource.java
@@ -23,9 +23,11 @@ import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import org.apache.camel.ProducerTemplate;
+import
org.apache.camel.support.processor.validation.NoXmlHeaderValidationException;
@Path("/validator")
@ApplicationScoped
@@ -33,14 +35,30 @@ public class ValidatorResource {
@Inject
ProducerTemplate producerTemplate;
- @Path("/validate/{scheme}")
+ @Path("/validate/{directName}")
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
- public Response processOrderInXml(String statement, @PathParam("scheme")
String scheme) {
+ public Response processOrderInXml(String statement,
+ @QueryParam("sourceHeader") String headerSourceContent,
+ @PathParam("directName") String directName) {
+
+ //if statement == "", use null instead
+ String body = statement != null && !statement.isEmpty() ? statement :
null;
+
try {
- return Response.ok().entity(producerTemplate.requestBody("direct:"
+ scheme, statement, String.class)).build();
+ if (headerSourceContent != null) {
+ return
Response.ok().entity(producerTemplate.requestBodyAndHeader("direct:" +
directName, null, "source",
+ headerSourceContent, String.class)).build();
+ }
+
+ return Response.ok().entity(producerTemplate.requestBody("direct:"
+ directName, body, String.class)).build();
+
} catch (Exception e) {
+ if (e.getCause() instanceof NoXmlHeaderValidationException) {
+ return
Response.serverError().entity(e.getCause().getMessage()).build();
+ }
+
return Response.serverError().entity(e.getMessage()).build();
}
}
diff --git
a/integration-tests/validator/src/main/java/org/apache/camel/quarkus/component/validator/it/ValidatorRouteBuilder.java
b/integration-tests/validator/src/main/java/org/apache/camel/quarkus/component/validator/it/ValidatorRouteBuilder.java
index f3024468a5..2b816b01d1 100644
---
a/integration-tests/validator/src/main/java/org/apache/camel/quarkus/component/validator/it/ValidatorRouteBuilder.java
+++
b/integration-tests/validator/src/main/java/org/apache/camel/quarkus/component/validator/it/ValidatorRouteBuilder.java
@@ -46,6 +46,15 @@ public class ValidatorRouteBuilder extends RouteBuilder {
from("direct:http")
.toD("validator:" + serverURL + "/xsd");
+ from("direct:headerSource")
+ .to("validator:message.xsd?headerName=source");
+
+ from("direct:headerSourceFailFalse")
+
.to("validator:message.xsd?headerName=source&failOnNullHeader=false");
+
+ from("direct:classpathFailFalse")
+ .to("validator:message.xsd?failOnNullBody=false");
+
}
public String createTempXsd(String sourceXsd) {
diff --git
a/integration-tests/validator/src/test/java/org/apache/camel/quarkus/component/validator/it/ValidatorTest.java
b/integration-tests/validator/src/test/java/org/apache/camel/quarkus/component/validator/it/ValidatorTest.java
index d204e2612a..8c70feec46 100644
---
a/integration-tests/validator/src/test/java/org/apache/camel/quarkus/component/validator/it/ValidatorTest.java
+++
b/integration-tests/validator/src/test/java/org/apache/camel/quarkus/component/validator/it/ValidatorTest.java
@@ -20,6 +20,7 @@ import io.quarkus.test.common.QuarkusTestResource;
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.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
@@ -29,6 +30,8 @@ import static org.hamcrest.Matchers.containsString;
@QuarkusTestResource(ValidatorTestResource.class)
class ValidatorTest {
+ private final String ERROR_RESPONSE = "Exception occurred during execution
on the exchange";
+
@ParameterizedTest
@ValueSource(strings = { "classpath", "filesystem", "http" })
public void validXML(String scheme) {
@@ -53,7 +56,6 @@ class ValidatorTest {
public void inValidXML(String scheme) {
String requestBody =
"<message><firstName>MyFirstname</firstName></message>";
- String errorResponse = "Exception occurred during execution on the
exchange";
RestAssured.given()
.contentType(ContentType.XML)
@@ -62,7 +64,71 @@ class ValidatorTest {
.then()
.statusCode(500)
.assertThat()
- .body(containsString(errorResponse));
+ .body(containsString(ERROR_RESPONSE));
+
+ }
+
+ @Test
+ public void sourceFromHeader() {
+
+ String requestBody =
"<message><firstName>MyFirstname</firstName><lastName>MyLastname</lastName></message>";
+
+ //header is empty
+ RestAssured.given()
+ .contentType(ContentType.XML)
+ .post("/validator/validate/headerSource")
+ .then()
+ .statusCode(500)
+ .assertThat()
+ .body(containsString("XML header \"source\" could not be
found"));
+
+ //correct path
+ RestAssured.given()
+ .contentType(ContentType.XML)
+ .queryParam("sourceHeader", requestBody)
+ .post("/validator/validate/headerSource")
+ .then()
+ .statusCode(200);
+
+ requestBody = "<message><firstName>MyFirstname</firstName></message>";
+
+ //invalid xml
+ RestAssured.given()
+ .contentType(ContentType.XML)
+ .queryParam("sourceHeader", requestBody)
+ .post("/validator/validate/headerSource")
+ .then()
+ .statusCode(500)
+ .assertThat()
+ .body(containsString(ERROR_RESPONSE));
+ }
+
+ @Test
+ public void nullParameters() {
+ String errorResponse = "Exception occurred during execution on the
exchange";
+
+ //failOnNullHeader == false (true is covered as default value by the
above tests)
+ RestAssured.given()
+ .contentType(ContentType.XML)
+ .post("/validator/validate/headerSourceFailFalse")
+ .then()
+ .statusCode(200);
+
+ //failOnNullBody == true
+ RestAssured.given()
+ .contentType(ContentType.XML)
+ .post("/validator/validate/classpath")
+ .then()
+ .statusCode(500)
+ .assertThat()
+ .body(containsString(ERROR_RESPONSE));
+
+ //failOnNullBody == false
+ RestAssured.given()
+ .contentType(ContentType.XML)
+ .post("/validator/validate/classpathFailFalse")
+ .then()
+ .statusCode(200);
}
}