From 44c7e5fc7990f7680a9ebf2c9066df8d4c76ece9 Mon Sep 17 00:00:00 2001 From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de> Date: Mon, 9 Sep 2024 16:55:52 +0200 Subject: [PATCH] OZG-6240 KOP-2589 WIP ResponseMapping und ManagementPort Test --- .../xta/test/app/mapper/ResponseMapper.java | 24 ++++-- .../test/app/server/ManagementPortImpl.java | 2 + .../app/server/ManagementPortImplTest.java | 73 +++++++++++++++++++ 3 files changed, 92 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/ozgcloud/xta/test/app/mapper/ResponseMapper.java b/src/main/java/de/ozgcloud/xta/test/app/mapper/ResponseMapper.java index 44b84a5..cdb40e5 100644 --- a/src/main/java/de/ozgcloud/xta/test/app/mapper/ResponseMapper.java +++ b/src/main/java/de/ozgcloud/xta/test/app/mapper/ResponseMapper.java @@ -9,6 +9,7 @@ import java.util.List; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; +import genv3.de.xoev.transport.xta.x211.TransportReport; import jakarta.activation.DataHandler; import jakarta.activation.FileDataSource; @@ -21,12 +22,8 @@ import org.mapstruct.ReportingPolicy; import org.mapstruct.SourcePropertyName; import org.mapstruct.TargetPropertyName; -import de.ozgcloud.xta.test.app.model.XtaFile; -import de.ozgcloud.xta.test.app.model.XtaIdentifier; -import de.ozgcloud.xta.test.app.model.XtaLookupServiceRequest; -import de.ozgcloud.xta.test.app.model.XtaMessage; -import de.ozgcloud.xta.test.app.model.XtaMessageMetaData; -import de.ozgcloud.xta.test.app.model.XtaMessageMetaDataListing; +import de.ozgcloud.xta.test.app.model.*; + import genv3.de.xoev.transport.xta.x211.ContentType; import genv3.de.xoev.transport.xta.x211.GenericContentContainer; import genv3.de.xoev.transport.xta.x211.LookupServiceResponse; @@ -128,7 +125,12 @@ public interface ResponseMapper { @SneakyThrows default XMLGregorianCalendar createNowXmlGregorianCalendarFromLocalDateTime() { - var isoTimeString = DateTimeFormatter.ISO_DATE_TIME.format(LocalDateTime.now()); + return createXmlGregorianCalendarFromLocalDateTime(LocalDateTime.now()); + } + + @SneakyThrows + default XMLGregorianCalendar createXmlGregorianCalendarFromLocalDateTime(LocalDateTime localDateTime) { + var isoTimeString = DateTimeFormatter.ISO_DATE_TIME.format(localDateTime); return DatatypeFactory.newInstance().newXMLGregorianCalendar(isoTimeString); } @@ -177,6 +179,14 @@ public interface ResponseMapper { @Mapping(target = "lookupServiceResultList.lookupServiceResult", expression = "java( List.of( mapLookupServiceResultType(xtaLookupServiceRequest) ) )") LookupServiceResponse mapLookupServiceResponse(XtaLookupServiceRequest xtaLookupServiceRequest); + @Mapping(target = "messageMetaData", source = "messageMetaData") + @Mapping(target = "reportTime", source = "reportTime") + @Mapping(target = "xtaServerIdentity", constant = "xta-test-server") + @Mapping(target = "messageStatus.status", source = "status.ordinal") + @Mapping(target = "additionalReports", ignore = true) + @Mapping(target = "signature", ignore = true) + TransportReport mapTransportReport(XtaTransportReport xtaTransportReport); + @Mapping(target = "otherAttributes", ignore = true) AttributedURIType mapCreateMessageIdResponse(String value); } diff --git a/src/main/java/de/ozgcloud/xta/test/app/server/ManagementPortImpl.java b/src/main/java/de/ozgcloud/xta/test/app/server/ManagementPortImpl.java index d47d134..e358158 100644 --- a/src/main/java/de/ozgcloud/xta/test/app/server/ManagementPortImpl.java +++ b/src/main/java/de/ozgcloud/xta/test/app/server/ManagementPortImpl.java @@ -7,6 +7,7 @@ import org.apache.cxf.annotations.SchemaValidation; import org.apache.cxf.ws.addressing.AttributedURIType; import org.springframework.stereotype.Component; +import de.ozgcloud.xta.test.app.mapper.ExceptionMapper; import de.ozgcloud.xta.test.app.mapper.RequestMapper; import de.ozgcloud.xta.test.app.mapper.ResponseMapper; import de.ozgcloud.xta.test.app.service.XtaMessageService; @@ -29,6 +30,7 @@ import lombok.extern.log4j.Log4j2; @Log4j2 public class ManagementPortImpl implements ManagementPortType { + private final ExceptionMapper exceptionMapper; private final ResponseMapper responseMapper; private final RequestMapper requestMapper; private final RequestValidator requestValidator; diff --git a/src/test/java/de/ozgcloud/xta/test/app/server/ManagementPortImplTest.java b/src/test/java/de/ozgcloud/xta/test/app/server/ManagementPortImplTest.java index 6574133..65287db 100644 --- a/src/test/java/de/ozgcloud/xta/test/app/server/ManagementPortImplTest.java +++ b/src/test/java/de/ozgcloud/xta/test/app/server/ManagementPortImplTest.java @@ -4,6 +4,10 @@ import static de.ozgcloud.xta.test.app.factory.MessageMetaDataTestFactory.*; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.util.Optional; + +import genv3.de.xoev.transport.xta.x211.InvalidMessageIDException; +import genv3.de.xoev.transport.xta.x211.TransportReport; import org.apache.cxf.ws.addressing.AttributedURIType; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -12,9 +16,13 @@ import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; +import de.ozgcloud.xta.test.app.factory.XtaMessageMetaDataTestFactory; +import de.ozgcloud.xta.test.app.mapper.ExceptionMapper; import de.ozgcloud.xta.test.app.mapper.RequestMapper; import de.ozgcloud.xta.test.app.mapper.ResponseMapper; +import de.ozgcloud.xta.test.app.model.XtaGetTransportReportRequest; import de.ozgcloud.xta.test.app.model.XtaLookupServiceRequest; +import de.ozgcloud.xta.test.app.model.XtaTransportReport; import de.ozgcloud.xta.test.app.service.XtaMessageService; import de.ozgcloud.xta.test.app.validation.RequestValidator; import genv3.de.xoev.transport.xta.x211.LookupServiceRequest; @@ -30,6 +38,8 @@ public class ManagementPortImplTest { @Mock private XtaMessageService xtaMessageService; @Mock + private ExceptionMapper exceptionMapper; + @Mock private ResponseMapper responseMapper; @Mock private RequestMapper requestMapper; @@ -113,4 +123,67 @@ public class ManagementPortImplTest { assertThat(result).isEqualTo(response); } } + + @DisplayName("get transport report") + @Nested + class TestGetTransportReport { + private static final String MESSAGE_ID = "urn:de:xta:messageid:1"; + + @Mock + private AttributedURIType messageId; + @Mock + private PartyType authorIdentifier; + @Mock + private XtaTransportReport xtaTransportReport; + + private XtaGetTransportReportRequest request; + + @BeforeEach + void beforeEach() { + request = XtaGetTransportReportRequest.builder() + .messageId(MESSAGE_ID) + .clientIdentifier(XtaMessageMetaDataTestFactory.READER_IDENTIFIER) + .build(); + + when(requestMapper.mapXtaGetTransportReportRequest(messageId, authorIdentifier)).thenReturn(request); + } + + @DisplayName("with valid request") + @Nested + class TestWithValidRequest { + @BeforeEach + void beforeEach() { + when(xtaMessageService.getTransportReport(request)).thenReturn(Optional.of(xtaTransportReport)); + when(responseMapper.mapTransportReport(xtaTransportReport)).thenReturn(TRANSPORT_REPORT); + } + + @DisplayName("should return") + @Test + void shouldReturn() { + var result = getTransportReport(); + + assertThat(result).contains(TRANSPORT_REPORT); + } + } + + @DisplayName("with Invalid message id") + @Nested + class TestWithInvalidMessageId { + @Mock + private InvalidMessageIDException exception; + + @DisplayName("should throw exception") + @Test + void shouldThrowException() { + when(xtaMessageService.getTransportReport(request)).thenReturn(Optional.empty()); + when(exceptionMapper.createInvalidMessageIDException(any())).thenReturn(exception); + + } + } + + @SneakyThrows + private TransportReport getTransportReport() { + return managementPortImpl.getTransportReport(messageId, authorIdentifier); + } + } } \ No newline at end of file -- GitLab