This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-3.x in repository https://gitbox.apache.org/repos/asf/camel.git
commit bf2e677b62314e14997044caedf0ba3ac3853a03 Author: Dennis Schwarz <[email protected]> AuthorDate: Fri Jan 13 13:24:02 2023 +0100 Solving TODO, values for from and subject are now read from the endpoint configuration (#9076) --- .../apache/camel/component/as2/AS2Consumer.java | 7 +++--- .../camel/component/as2/AS2ServerManagerIT.java | 29 +++++++++++++++++++++- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Consumer.java b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Consumer.java index d2535a51939..2c6142b1eda 100644 --- a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Consumer.java +++ b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Consumer.java @@ -43,6 +43,8 @@ import org.apache.http.protocol.HttpRequestHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static java.util.Optional.ofNullable; + /** * The AS2 consumer. * @@ -115,9 +117,8 @@ public class AS2Consumer extends AbstractApiConsumer<AS2ApiName, AS2Configuratio try { if (request instanceof HttpEntityEnclosingRequest) { EntityParser.parseAS2MessageEntity(request); - // TODO derive last to parameters from configuration. - apiProxy.handleMDNResponse(context, "MDN Response", - "Camel AS2 Server Endpoint"); + apiProxy.handleMDNResponse(context, getEndpoint().getSubject(), + ofNullable(getEndpoint().getFrom()).orElse(getEndpoint().getConfiguration().getServer())); } ApplicationEDIEntity ediEntity diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java index 4982e7b0854..7449fe0a66f 100644 --- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java +++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java @@ -207,7 +207,7 @@ public class AS2ServerManagerIT extends AbstractAS2ITSupport { assertEquals(EDI_MESSAGE.replaceAll("[\n\r]", ""), rcvdMessageFromBody.replaceAll("[\n\r]", ""), "EDI message does not match"); } - + @Test public void receiveMultipartSignedMessageTest() throws Exception { @@ -378,6 +378,30 @@ public class AS2ServerManagerIT extends AbstractAS2ITSupport { String errorMessage = new String(Streams.readAll(responseEntity.getContent())); assertEquals(EXPECTED_EXCEPTION_MSG, errorMessage, ""); } + + @Test + public void checkMDNTest() throws Exception { + AS2ClientConnection clientConnection + = new AS2ClientConnection(AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST, TARGET_PORT); + AS2ClientManager clientManager = new AS2ClientManager(clientConnection); + + //Testing MDN parameter defaults + HttpCoreContext response=clientManager.send(EDI_MESSAGE, REQUEST_URI, SUBJECT, FROM, AS2_NAME, AS2_NAME, AS2MessageStructure.PLAIN, + ContentType.create(AS2MediaType.APPLICATION_EDIFACT, StandardCharsets.US_ASCII), null, null, null, null, + null, DISPOSITION_NOTIFICATION_TO, SIGNED_RECEIPT_MIC_ALGORITHMS, null, null, null); + + assertEquals(new AS2Configuration().getServer(), response.getResponse().getFirstHeader(AS2Header.FROM).getValue(), "Default value for From header not set"); + assertEquals("MDN Response To:" + SUBJECT, response.getResponse().getFirstHeader(AS2Header.SUBJECT).getValue(), "Default value for Subject header not set"); + + //Testing MDN parameter overwrites + response=clientManager.send(EDI_MESSAGE, REQUEST_URI+"mdnTest", SUBJECT, FROM, AS2_NAME, AS2_NAME, AS2MessageStructure.PLAIN, + ContentType.create(AS2MediaType.APPLICATION_EDIFACT, StandardCharsets.US_ASCII), null, null, null, null, + null, DISPOSITION_NOTIFICATION_TO, SIGNED_RECEIPT_MIC_ALGORITHMS, null, null, null); + + assertEquals("MdnTestFrom", response.getResponse().getFirstHeader(AS2Header.FROM).getValue(), "Configured value for From header not set"); + assertEquals("MdnTestSubjectPrefix" + SUBJECT, response.getResponse().getFirstHeader(AS2Header.SUBJECT).getValue(), "Configured value for Subject header not set"); + } + private static void setupSigningGenerator() throws Exception { Security.addProvider(new BouncyCastleProvider()); @@ -462,6 +486,9 @@ public class AS2ServerManagerIT extends AbstractAS2ITSupport { .process(failingProcessor) .to("mock:as2RcvMsgs"); + // test route for listen with custom MDN parameters + from("as2://" + PATH_PREFIX + "/listen?requestUriPattern=/mdnTest&from=MdnTestFrom&subject=MdnTestSubjectPrefix") + .to("mock:as2RcvMsgs"); } }; }
