This is an automated email from the ASF dual-hosted git repository. zhfeng pushed a commit to branch 3.8.x in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit e016779a4fe7ee3afe93f728a85d59b679e81ae6 Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Mon Oct 21 11:37:32 2024 +0100 Improve some test assertions in FHIR tests --- .../fhir/it/AbstractFhirRouteBuilder.java | 7 ++++ .../component/fhir/it/FhirDstu2Hl7OrgResource.java | 43 +++++++--------------- .../component/fhir/it/FhirDstu2Resource.java | 40 +++++++------------- .../component/fhir/it/FhirDstu2_1Resource.java | 40 +++++++------------- .../component/fhir/it/FhirDstu3Resource.java | 27 +++++--------- .../quarkus/component/fhir/it/FhirR4Resource.java | 40 +++++++------------- .../quarkus/component/fhir/it/FhirR5Resource.java | 40 +++++++------------- .../component/fhir/it/AbstractFhirTest.java | 22 ++++++++++- 8 files changed, 107 insertions(+), 152 deletions(-) diff --git a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/AbstractFhirRouteBuilder.java b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/AbstractFhirRouteBuilder.java index 9d9342e760..44f1af2cbe 100644 --- a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/AbstractFhirRouteBuilder.java +++ b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/AbstractFhirRouteBuilder.java @@ -83,6 +83,13 @@ public abstract class AbstractFhirRouteBuilder extends RouteBuilder { .toF("fhir-%s://create/resource?inBody=resource", sanitizedFhirVersion); fromF("direct:createResourceAsString-%s", sanitizedFhirVersion) + .choice() + .when(simple("${header.encodeAs} == 'encodeJson'")) + .marshal(fhirJsonDataFormat) + .otherwise() + .marshal(fhirXmlDataFormat) + .end() + .convertBodyTo(String.class) .toF("fhir-%s://create/resource?inBody=resourceAsString", sanitizedFhirVersion); // Dataformats diff --git a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2Hl7OrgResource.java b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2Hl7OrgResource.java index 67b70174f4..c94044b793 100644 --- a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2Hl7OrgResource.java +++ b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2Hl7OrgResource.java @@ -16,7 +16,6 @@ */ package org.apache.camel.quarkus.component.fhir.it; -import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URLEncoder; @@ -125,18 +124,10 @@ public class FhirDstu2Hl7OrgResource { patient.addAddress().addLine(address); patient.addName().addGiven(firstName).addFamily(lastName); - String patientString = null; Map<String, Object> headers = new HashMap<>(); - headers.put(encodeAs, Boolean.TRUE); + headers.put("encodeAs", encodeAs); - if (encodeAs.equals("encodeJson")) { - patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - } else { - patientString = fhirContextInstance.get().newXmlParser().encodeResourceToString(patient); - } - - MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-dstu2-hl7org", - patientString, + MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-dstu2-hl7org", patient, headers, MethodOutcome.class); @@ -177,7 +168,7 @@ public class FhirDstu2Hl7OrgResource { @Path("/fhir2json") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_JSON) public Response fhir2json( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, @@ -188,19 +179,16 @@ public class FhirDstu2Hl7OrgResource { patient.addName().addGiven(firstName).addFamily(lastName); String patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - - try (InputStream response = producerTemplate.requestBody("direct:json-to-dstu2-hl7org", patientString, - InputStream.class)) { - return Response - .created(new URI("https:camel.apache.org/")) - .entity(response) - .build(); - } + String response = producerTemplate.requestBody("direct:json-to-dstu2-hl7org", patientString, String.class); + return Response + .created(new URI("https:camel.apache.org/")) + .entity(response) + .build(); } @Path("/fhir2xml") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_XML) public Response fhir2xml( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, @@ -211,14 +199,11 @@ public class FhirDstu2Hl7OrgResource { patient.addName().addGiven(firstName).addFamily(lastName); String patientString = fhirContextInstance.get().newXmlParser().encodeResourceToString(patient); - - try (InputStream response = producerTemplate.requestBody("direct:xml-to-dstu2-hl7org", patientString, - InputStream.class)) { - return Response - .created(new URI("https:camel.apache.org/")) - .entity(response) - .build(); - } + String response = producerTemplate.requestBody("direct:xml-to-dstu2-hl7org", patientString, String.class); + return Response + .created(new URI("https:camel.apache.org/")) + .entity(response) + .build(); } ///////////////////// diff --git a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2Resource.java b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2Resource.java index dddec0e08a..ed09ec21b5 100644 --- a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2Resource.java +++ b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2Resource.java @@ -16,7 +16,6 @@ */ package org.apache.camel.quarkus.component.fhir.it; -import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URLEncoder; @@ -130,17 +129,10 @@ public class FhirDstu2Resource { patient.addAddress().addLine(address); patient.addName().addGiven(firstName).setFamily(Arrays.asList(new StringDt(lastName))); - String patientString = null; Map<String, Object> headers = new HashMap<>(); - headers.put(encodeAs, Boolean.TRUE); + headers.put("encodeAs", encodeAs); - if (encodeAs.equals("encodeJson")) { - patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - } else { - patientString = fhirContextInstance.get().newXmlParser().encodeResourceToString(patient); - } - - MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-dstu2", patientString, + MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-dstu2", patient, headers, MethodOutcome.class); @@ -181,7 +173,7 @@ public class FhirDstu2Resource { @Path("/fhir2json") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_JSON) public Response fhir2json( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, @@ -192,18 +184,16 @@ public class FhirDstu2Resource { patient.addName().addGiven(firstName).setFamily(Arrays.asList(new StringDt(lastName))); String patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - - try (InputStream response = producerTemplate.requestBody("direct:json-to-dstu2", patientString, InputStream.class)) { - return Response - .created(new URI("https:camel.apache.org/")) - .entity(response) - .build(); - } + String response = producerTemplate.requestBody("direct:json-to-dstu2", patientString, String.class); + return Response + .created(new URI("https:camel.apache.org/")) + .entity(response) + .build(); } @Path("/fhir2xml") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_XML) public Response fhir2xml( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, @@ -214,13 +204,11 @@ public class FhirDstu2Resource { patient.addName().addGiven(firstName).setFamily(Arrays.asList(new StringDt(lastName))); String patientString = fhirContextInstance.get().newXmlParser().encodeResourceToString(patient); - - try (InputStream response = producerTemplate.requestBody("direct:xml-to-dstu2", patientString, InputStream.class)) { - return Response - .created(new URI("https:camel.apache.org/")) - .entity(response) - .build(); - } + String response = producerTemplate.requestBody("direct:xml-to-dstu2", patientString, String.class); + return Response + .created(new URI("https:camel.apache.org/")) + .entity(response) + .build(); } ///////////////////// diff --git a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2_1Resource.java b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2_1Resource.java index af5d2ad2ea..4d0391fe85 100644 --- a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2_1Resource.java +++ b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu2_1Resource.java @@ -16,7 +16,6 @@ */ package org.apache.camel.quarkus.component.fhir.it; -import java.io.InputStream; import java.net.URI; import java.net.URLEncoder; import java.text.ParseException; @@ -124,17 +123,10 @@ public class FhirDstu2_1Resource { patient.addAddress().addLine(address); patient.addName().addGiven(firstName).addFamily(lastName); - String patientString = null; Map<String, Object> headers = new HashMap<>(); - headers.put(encodeAs, Boolean.TRUE); + headers.put("encodeAs", encodeAs); - if (encodeAs.equals("encodeJson")) { - patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - } else { - patientString = fhirContextInstance.get().newXmlParser().encodeResourceToString(patient); - } - - MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-dstu2-1", patientString, + MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-dstu2-1", patient, headers, MethodOutcome.class); @@ -175,7 +167,7 @@ public class FhirDstu2_1Resource { @Path("/fhir2json") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_JSON) public Response fhir2json( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, @@ -186,18 +178,16 @@ public class FhirDstu2_1Resource { patient.addName().addGiven(firstName).addFamily(lastName); String patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - - try (InputStream response = producerTemplate.requestBody("direct:json-to-dstu2-1", patientString, InputStream.class)) { - return Response - .created(new URI("https:camel.apache.org/")) - .entity(response) - .build(); - } + String response = producerTemplate.requestBody("direct:json-to-dstu2-1", patientString, String.class); + return Response + .created(new URI("https:camel.apache.org/")) + .entity(response) + .build(); } @Path("/fhir2xml") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_XML) public Response fhir2xml( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, @@ -208,13 +198,11 @@ public class FhirDstu2_1Resource { patient.addName().addGiven(firstName).addFamily(lastName); String patientString = fhirContextInstance.get().newXmlParser().encodeResourceToString(patient); - - try (InputStream response = producerTemplate.requestBody("direct:xml-to-dstu2-1", patientString, InputStream.class)) { - return Response - .created(new URI("https:camel.apache.org/")) - .entity(response) - .build(); - } + String response = producerTemplate.requestBody("direct:xml-to-dstu2-1", patientString, String.class); + return Response + .created(new URI("https:camel.apache.org/")) + .entity(response) + .build(); } ///////////////////// diff --git a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu3Resource.java b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu3Resource.java index ed89c4310d..684124b912 100644 --- a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu3Resource.java +++ b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirDstu3Resource.java @@ -126,17 +126,10 @@ public class FhirDstu3Resource { patient.addAddress().addLine(address); patient.addName().addGiven(firstName).setFamily(lastName); - String patientString = null; Map<String, Object> headers = new HashMap<>(); - headers.put(encodeAs, Boolean.TRUE); + headers.put("encodeAs", encodeAs); - if (encodeAs.equals("encodeJson")) { - patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - } else { - patientString = fhirContextInstance.get().newXmlParser().encodeResourceToString(patient); - } - - MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-dstu3", patientString, + MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-dstu3", patient, headers, MethodOutcome.class); @@ -177,7 +170,7 @@ public class FhirDstu3Resource { @Path("/fhir2json") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_JSON) public Response fhir2json( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, @@ -188,18 +181,16 @@ public class FhirDstu3Resource { patient.addName().addGiven(firstName).setFamily(lastName); String patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - - try (InputStream response = producerTemplate.requestBody("direct:json-to-dstu3", patientString, InputStream.class)) { - return Response - .created(new URI("https:camel.apache.org/")) - .entity(response) - .build(); - } + String response = producerTemplate.requestBody("direct:json-to-dstu3", patientString, String.class); + return Response + .created(new URI("https:camel.apache.org/")) + .entity(response) + .build(); } @Path("/fhir2xml") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_XML) public Response fhir2xml( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, diff --git a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR4Resource.java b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR4Resource.java index 8ae4d58dae..6534c9eebd 100644 --- a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR4Resource.java +++ b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR4Resource.java @@ -16,7 +16,6 @@ */ package org.apache.camel.quarkus.component.fhir.it; -import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URI; import java.text.ParseException; @@ -125,17 +124,10 @@ public class FhirR4Resource { patient.addAddress().addLine(address); patient.addName().addGiven(firstName).setFamily(lastName); - String patientString = null; Map<String, Object> headers = new HashMap<>(); - headers.put(encodeAs, Boolean.TRUE); + headers.put("encodeAs", encodeAs); - if (encodeAs.equals("encodeJson")) { - patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - } else { - patientString = fhirContextInstance.get().newXmlParser().encodeResourceToString(patient); - } - - MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-r4", patientString, + MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-r4", patient, headers, MethodOutcome.class); @@ -176,7 +168,7 @@ public class FhirR4Resource { @Path("/fhir2json") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_JSON) public Response fhir2json( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, @@ -187,18 +179,16 @@ public class FhirR4Resource { patient.addName().addGiven(firstName).setFamily(lastName); String patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - - try (InputStream response = producerTemplate.requestBody("direct:json-to-r4", patientString, InputStream.class)) { - return Response - .created(new URI("https:camel.apache.org/")) - .entity(response) - .build(); - } + String result = producerTemplate.requestBody("direct:json-to-r4", patientString, String.class); + return Response + .created(new URI("https:camel.apache.org/")) + .entity(result) + .build(); } @Path("/fhir2xml") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_XML) public Response fhir2xml( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, @@ -209,13 +199,11 @@ public class FhirR4Resource { patient.addName().addGiven(firstName).setFamily(lastName); String patientString = fhirContextInstance.get().newXmlParser().encodeResourceToString(patient); - - try (InputStream response = producerTemplate.requestBody("direct:xml-to-r4", patientString, InputStream.class)) { - return Response - .created(new URI("https:camel.apache.org/")) - .entity(response) - .build(); - } + String result = producerTemplate.requestBody("direct:xml-to-r4", patientString, String.class); + return Response + .created(new URI("https:camel.apache.org/")) + .entity(result) + .build(); } ///////////////////// diff --git a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR5Resource.java b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR5Resource.java index db6269a1c2..83883ab1b1 100644 --- a/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR5Resource.java +++ b/integration-tests/fhir/src/main/java/org/apache/camel/quarkus/component/fhir/it/FhirR5Resource.java @@ -16,7 +16,6 @@ */ package org.apache.camel.quarkus.component.fhir.it; -import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URI; import java.text.ParseException; @@ -123,17 +122,10 @@ public class FhirR5Resource { patient.addAddress().addLine(address); patient.addName().addGiven(firstName).setFamily(lastName); - String patientString = null; Map<String, Object> headers = new HashMap<>(); - headers.put(encodeAs, Boolean.TRUE); + headers.put("encodeAs", encodeAs); - if (encodeAs.equals("encodeJson")) { - patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - } else { - patientString = fhirContextInstance.get().newXmlParser().encodeResourceToString(patient); - } - - MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-r5", patientString, + MethodOutcome result = producerTemplate.requestBodyAndHeaders("direct:createResourceAsString-r5", patient, headers, MethodOutcome.class); @@ -174,7 +166,7 @@ public class FhirR5Resource { @Path("/fhir2json") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_JSON) public Response fhir2json( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, @@ -185,18 +177,16 @@ public class FhirR5Resource { patient.addName().addGiven(firstName).setFamily(lastName); String patientString = fhirContextInstance.get().newJsonParser().encodeResourceToString(patient); - - try (InputStream response = producerTemplate.requestBody("direct:json-to-r5", patientString, InputStream.class)) { - return Response - .created(new URI("https:camel.apache.org/")) - .entity(response) - .build(); - } + String response = producerTemplate.requestBody("direct:json-to-r5", patientString, String.class); + return Response + .created(new URI("https:camel.apache.org/")) + .entity(response) + .build(); } @Path("/fhir2xml") @GET - @Produces(MediaType.APPLICATION_OCTET_STREAM) + @Produces(MediaType.APPLICATION_XML) public Response fhir2xml( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName, @@ -207,13 +197,11 @@ public class FhirR5Resource { patient.addName().addGiven(firstName).setFamily(lastName); String patientString = fhirContextInstance.get().newXmlParser().encodeResourceToString(patient); - - try (InputStream response = producerTemplate.requestBody("direct:xml-to-r5", patientString, InputStream.class)) { - return Response - .created(new URI("https:camel.apache.org/")) - .entity(response) - .build(); - } + String response = producerTemplate.requestBody("direct:xml-to-r5", patientString, String.class); + return Response + .created(new URI("https:camel.apache.org/")) + .entity(response) + .build(); } ///////////////////// diff --git a/integration-tests/fhir/src/test/java/org/apache/camel/quarkus/component/fhir/it/AbstractFhirTest.java b/integration-tests/fhir/src/test/java/org/apache/camel/quarkus/component/fhir/it/AbstractFhirTest.java index 357dfd541a..14ba3a20b7 100644 --- a/integration-tests/fhir/src/test/java/org/apache/camel/quarkus/component/fhir/it/AbstractFhirTest.java +++ b/integration-tests/fhir/src/test/java/org/apache/camel/quarkus/component/fhir/it/AbstractFhirTest.java @@ -23,6 +23,7 @@ import java.util.stream.Stream; import io.restassured.RestAssured; import io.restassured.http.ContentType; import io.restassured.path.json.JsonPath; +import io.restassured.response.ValidatableResponse; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -45,10 +46,29 @@ abstract class AbstractFhirTest { @ParameterizedTest @ValueSource(strings = { "fhir2json", "fhir2xml" }) public void marshalUnmarshal(String path) { - RestAssured.given() + ValidatableResponse response = RestAssured.given() + .queryParam("firstName", PATIENT_FIRST_NAME) + .queryParam("lastName", PATIENT_LAST_NAME) + .queryParam("address", PATIENT_ADDRESS) .get("/" + path) .then() .statusCode(201); + + String familyNameKey = "name[0].family"; + if (getClass().getSimpleName().matches("FhirDstu2(Hl7Org)?(Test|IT)")) { + familyNameKey = "name[0].family[0]"; + } + + if (path.equals("fhir2json")) { + response.body("resourceType", is("Patient"), + "name[0].given[0]", is(PATIENT_FIRST_NAME), + familyNameKey, is(PATIENT_LAST_NAME), + "address[0].line[0]", is(PATIENT_ADDRESS)); + } else { + response.body("Patient.name.given.@value", is(PATIENT_FIRST_NAME), + "Patient.name.family.@value", is(PATIENT_LAST_NAME), + "Patient.address.line.@value", is(PATIENT_ADDRESS)); + } } @ParameterizedTest