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 d47d13465fa68e0f1db6e523a19a77e27e847b5a..e35815857e87ab8f6b4c1b5a9b78a68c74dd642f 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 65741330a0c51de32724284959fe827644b8bdce..65287db3e8e031c70f0c7ad73737e849fd541f13 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