diff --git a/src/test/java/de/ozgcloud/xta/client/XtaSchemaValidationITCase.java b/src/test/java/de/ozgcloud/xta/client/XtaSchemaValidationITCase.java index 44679c30be202e455b972a1612a03d6578bf866f..542c12c9e3d3d6460f3af92777c765774a747cdc 100644 --- a/src/test/java/de/ozgcloud/xta/client/XtaSchemaValidationITCase.java +++ b/src/test/java/de/ozgcloud/xta/client/XtaSchemaValidationITCase.java @@ -1,15 +1,19 @@ package de.ozgcloud.xta.client; import static com.github.tomakehurst.wiremock.client.WireMock.*; -import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.*; +import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options; import static org.assertj.core.api.Assertions.*; +import java.io.File; + +import org.apache.commons.io.FileUtils; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.client.WireMock; import de.ozgcloud.xta.client.config.XtaClientConfig; import de.ozgcloud.xta.client.core.WrappedXtaService; @@ -18,7 +22,6 @@ import de.ozgcloud.xta.client.factory.XtaMockServerResponseTestFactory; import de.ozgcloud.xta.client.model.XtaIdentifier; import lombok.SneakyThrows; - class XtaSchemaValidationITCase { WrappedXtaService xtaService; @@ -32,16 +35,37 @@ class XtaSchemaValidationITCase { @BeforeEach @SneakyThrows void setup() { - wireMockServer = new WireMockServer(options().port(8089)); + wireMockServer = new WireMockServer(options() + .port(8088) + .httpsPort(8089) + .keystorePath("store/xta-test-server_keystore.p12") + .keystorePassword("password") + .keystoreType("PKCS12") + .caKeystorePath("store/xta-test_truststore.jks") + .caKeystorePassword("password") + .caKeystoreType("JKS") + ); wireMockServer.start(); + WireMock.configureFor(8088); + xtaService = WrappedXtaServiceFactory.from(XtaClientConfig.builder() .schemaValidation(true) .logSoapResponses(true) .logSoapRequests(true) - .managementServiceUrl(XTA_MOCK_SERVER_URL + "managementPort.svc") - .sendServiceUrl(XTA_MOCK_SERVER_URL + "sendPort.svc") - .msgBoxServiceUrl(XTA_MOCK_SERVER_URL + "msgBoxPort.svc") + .trustStore(XtaClientConfig.KeyStore.builder() + .content(FileUtils.readFileToByteArray(new File("src/test/resources/store/xta-test_truststore.jks"))) + .password("password".toCharArray()) + .type("JKS") + .build()) + .clientCertKeystore(XtaClientConfig.KeyStore.builder() + .content(FileUtils.readFileToByteArray(new File("src/test/resources/store/xta-test-client-john-smith_keystore.p12"))) + .password("password".toCharArray()) + .type("PKCS12") + .build()) + .managementServiceUrl(wireMockServer.baseUrl() + XTA_MOCK_SERVER_URL_PATH + "managementPort.svc") + .sendServiceUrl(wireMockServer.baseUrl() + XTA_MOCK_SERVER_URL_PATH + "sendPort.svc") + .msgBoxServiceUrl(wireMockServer.baseUrl() + XTA_MOCK_SERVER_URL_PATH + "msgBoxPort.svc") .build()).create(); } @@ -54,7 +78,7 @@ class XtaSchemaValidationITCase { @Test @SneakyThrows void shouldThrowUnmarshallExceptionOnBadResponse() { - stubFor(post(XTA_MOCK_SERVER_URL_PATH + "msgBoxPort.svc") + wireMockServer.stubFor(post(XTA_MOCK_SERVER_URL_PATH + "msgBoxPort.svc") .willReturn( XtaMockServerResponseTestFactory.createGetMessageResponse( "2f45a9e9-ed40-4e14-a082-de0d063e56e7_Geschaeftsgang.Geschaeftsgang.0201.zip"))); diff --git a/src/test/java/de/ozgcloud/xta/client/factory/XtaMockServerResponseTestFactory.java b/src/test/java/de/ozgcloud/xta/client/factory/XtaMockServerResponseTestFactory.java index 4f34d702616dcf1eab1f3c02a388f2807295a63f..25c79eb22143d4946e1fb6dbb163a104a5e13618 100644 --- a/src/test/java/de/ozgcloud/xta/client/factory/XtaMockServerResponseTestFactory.java +++ b/src/test/java/de/ozgcloud/xta/client/factory/XtaMockServerResponseTestFactory.java @@ -30,7 +30,7 @@ public class XtaMockServerResponseTestFactory { ); private static String generateMessageID(String xtaAttachmentFileName) { - return "urn:de:xta:messageid:dataport_xta_210:%s".formatted(UUID.fromString(xtaAttachmentFileName).toString()); + return "urn:de:xta:messageid:dataport_xta_210:%s".formatted(UUID.nameUUIDFromBytes(xtaAttachmentFileName.getBytes()).toString()); } public static ResponseDefinitionBuilder createEmptyGetStatusListResponse() { diff --git a/src/test/resources/mock-responses/getMessage/stage-example/example2/example.xml b/src/test/resources/mock-responses/getMessage/stage-example/example2/example.xml new file mode 100644 index 0000000000000000000000000000000000000000..73f9d6e53d25a650f48d1c0d5cddb9d8de610d1b --- /dev/null +++ b/src/test/resources/mock-responses/getMessage/stage-example/example2/example.xml @@ -0,0 +1,59 @@ +<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> + <s:Header> + <a:Action s:mustUnderstand="1">http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest + </a:Action> + <h:MsgBoxResponse MsgBoxRequestID="urn:de:xta:messageid:dataport_xta_210:0b2d4796-7f31-40c3-b834-7f7c66c042c9" + xmlns:h="http://www.osci.eu/ws/2008/05/transport" xmlns="http://www.osci.eu/ws/2008/05/transport" + > + <ItemsPending>0</ItemsPending> + </h:MsgBoxResponse> + <h:MessageMetaData xmlns:h="http://www.osci.eu/ws/2014/10/transport" + xmlns="http://www.osci.eu/ws/2014/10/transport"> + <DeliveryAttributes> + <Origin>2025-04-02T10:49:30.324</Origin> + <Delivery>2025-04-02T10:49:32.893</Delivery> + </DeliveryAttributes> + <Originators> + <Author> + <Identifier type="xoev">afmsh:WebMethod_Online-Dienste</Identifier> + </Author> + </Originators> + <Destinations> + <Reader> + <Identifier type="xoev">afmsh:ozg-cloud-stage-Utopia</Identifier> + </Reader> + </Destinations> + <MsgIdentification> + <MessageID xmlns="http://www.w3.org/2005/08/addressing"> + urn:de:xta:messageid:dataport_xta_210:0b2d4796-7f31-40c3-b834-7f7c66c042c9 + </MessageID> + </MsgIdentification> + <Qualifier> + <Service>urn:xdomea:AFM</Service> + <BusinessScenario> + <Defined listURI="urn:de:dataport:codeliste:business.scenario" listVersionID="1"> + <code xmlns="">AFM_DATA</code> + </Defined> + </BusinessScenario> + <MessageType listURI="urn:de:payloadSchema:elementName" listVersionID="1.0" + payloadSchema="http://www.xdomea.de/V2.0.1"> + <code xmlns="">Geschaeftsgang.Geschaeftsgang.0201</code> + </MessageType> + </Qualifier> + <MsgSize>57890</MsgSize> + </h:MessageMetaData> + <a:RelatesTo>urn:uuid:0cb6ed55-8ac9-492a-9e76-6235e41729ea</a:RelatesTo> + </s:Header> + <s:Body> + <GenericContentContainer xmlns="http://xoev.de/transport/xta/211"> + <ContentContainer> + <Message contentType="application/zip" + filename="1088975e-5892-474e-a0e9-d3cef8ee61db_Geschaeftsgang.Geschaeftsgang.0201.zip" + id="1088975e-5892-474e-a0e9-d3cef8ee61db" size="57890"> + <xop:Include href="cid:http://tempuri.org/1/638791906226975019" + xmlns:xop="http://www.w3.org/2004/08/xop/include" /> + </Message> + </ContentContainer> + </GenericContentContainer> + </s:Body> +</s:Envelope> \ No newline at end of file diff --git a/src/test/resources/store/xta-test-server_keystore.p12 b/src/test/resources/store/xta-test-server_keystore.p12 new file mode 100644 index 0000000000000000000000000000000000000000..4b01606dc5b1dd7424a6f100f63914ea3e506d70 Binary files /dev/null and b/src/test/resources/store/xta-test-server_keystore.p12 differ