From a06f445328fbcde6dfa71ee1a5ed93383e7ebd1d Mon Sep 17 00:00:00 2001
From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de>
Date: Tue, 10 Sep 2024 15:50:10 +0200
Subject: [PATCH] OZG-6240 KOP-2589 ManagementPort getTransportReport

---
 .../xta/test/app/mapper/ExceptionMapper.java  |  6 +++++
 .../test/app/server/ManagementPortImpl.java   |  9 ++++----
 .../xta/test/app/server/MsgBoxPortImpl.java   | 10 ++------
 .../test/app/mapper/ExceptionMapperTest.java  |  7 ++++++
 .../app/server/ManagementPortImplTest.java    | 23 +++++++++++--------
 5 files changed, 34 insertions(+), 21 deletions(-)

diff --git a/src/main/java/de/ozgcloud/xta/test/app/mapper/ExceptionMapper.java b/src/main/java/de/ozgcloud/xta/test/app/mapper/ExceptionMapper.java
index e9aa816..86ef815 100644
--- a/src/main/java/de/ozgcloud/xta/test/app/mapper/ExceptionMapper.java
+++ b/src/main/java/de/ozgcloud/xta/test/app/mapper/ExceptionMapper.java
@@ -33,6 +33,12 @@ public interface ExceptionMapper {
 		);
 	}
 
+	default InvalidMessageIDException createInvalidMessageIDException(String messageId, String clientIdentifierValue) {
+		return createInvalidMessageIDException(
+				"No message with messageID \"%s\" available for identifier \"%s\"."
+						.formatted(messageId, clientIdentifierValue));
+	}
+
 	@Mapping(target = "errorCode", expression = "java( mapCodeFehlernummer(code, name) )")
 	InvalidMessageIDExceptionType mapInvalidMessageIDExceptionType(String code, String name);
 
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 e358158..acc98e4 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
@@ -18,7 +18,6 @@ import genv3.de.xoev.transport.xta.x211.LookupServiceRequest;
 import genv3.de.xoev.transport.xta.x211.ManagementPortType;
 import genv3.de.xoev.transport.xta.x211.ParameterIsNotValidException;
 import genv3.de.xoev.transport.xta.x211.PermissionDeniedException;
-import genv3.de.xoev.transport.xta.x211.TransportReport;
 import genv3.de.xoev.transport.xta.x211.XTAWSTechnicalProblemException;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
@@ -109,11 +108,13 @@ public class ManagementPortImpl implements ManagementPortType {
 			final genv3.eu.osci.ws.x2014.x10.transport.PartyType authorIdentifier)
 			throws XTAWSTechnicalProblemException, InvalidMessageIDException, PermissionDeniedException {
 		log.info("Executing operation getTransportReport");
-		TransportReport transportReport = new TransportReport();
+		var request = requestMapper.mapXtaGetTransportReportRequest(messageID, authorIdentifier);
+		requestValidator.validate(request);
 
-		// TODO implement
+		var xtaTransportReport = xtaMessageService.getTransportReport(request)
+				.orElseThrow(() -> exceptionMapper.createInvalidMessageIDException(request.messageId(), request.clientIdentifier().value()));
 
-		return transportReport;
+		return responseMapper.mapTransportReport(xtaTransportReport);
 	}
 
 }
diff --git a/src/main/java/de/ozgcloud/xta/test/app/server/MsgBoxPortImpl.java b/src/main/java/de/ozgcloud/xta/test/app/server/MsgBoxPortImpl.java
index 6e43533..dc89cb2 100644
--- a/src/main/java/de/ozgcloud/xta/test/app/server/MsgBoxPortImpl.java
+++ b/src/main/java/de/ozgcloud/xta/test/app/server/MsgBoxPortImpl.java
@@ -50,7 +50,7 @@ public class MsgBoxPortImpl implements MsgBoxPortType {
 		requestValidator.validate(request);
 
 		var message = messageService.getMessage(request)
-				.orElseThrow(() -> createInvalidMessageIdException(request.messageId(), request.clientIdentifier().value()));
+				.orElseThrow(() -> exceptionMapper.createInvalidMessageIDException(request.messageId(), request.clientIdentifier().value()));
 
 		messageMetaData.value = responseMapper.mapMessageMetaData(message.metaData());
 		fetchResponseHeader.value = responseMapper.mapMsgBoxResponseTypeFromRequestId(
@@ -131,14 +131,8 @@ public class MsgBoxPortImpl implements MsgBoxPortType {
 		requestValidator.validate(request);
 
 		if (!messageService.closeMessage(request)) {
-			throw createInvalidMessageIdException(request.messageId(), request.clientIdentifier().value());
+			throw exceptionMapper.createInvalidMessageIDException(request.messageId(), request.clientIdentifier().value());
 		}
 	}
 
-	private InvalidMessageIDException createInvalidMessageIdException(String messageId, String clientIdentifierValue) {
-		return exceptionMapper.createInvalidMessageIDException(
-				"No message with messageID \"%s\" available for identifier \"%s\"."
-						.formatted(messageId, clientIdentifierValue));
-	}
-
 }
diff --git a/src/test/java/de/ozgcloud/xta/test/app/mapper/ExceptionMapperTest.java b/src/test/java/de/ozgcloud/xta/test/app/mapper/ExceptionMapperTest.java
index 4279ef9..e032487 100644
--- a/src/test/java/de/ozgcloud/xta/test/app/mapper/ExceptionMapperTest.java
+++ b/src/test/java/de/ozgcloud/xta/test/app/mapper/ExceptionMapperTest.java
@@ -42,6 +42,13 @@ class ExceptionMapperTest {
 			return mapper.createInvalidMessageIDException(exceptionMessage);
 		}
 
+		@DisplayName("should map message id and identifier to message")
+		@Test
+		void shouldMapMessageIdAndIdentifier() {
+			var result = mapper.createInvalidMessageIDException("id-1234", "identifier-5678");
+
+			assertThat(result.getMessage()).isEqualTo("No message with messageID \"id-1234\" available for identifier \"identifier-5678\".");
+		}
 	}
 
 	@DisplayName("create technical problem exception")
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 65287db..2f0e112 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
@@ -1,13 +1,18 @@
 package de.ozgcloud.xta.test.app.server;
 
-import static de.ozgcloud.xta.test.app.factory.MessageMetaDataTestFactory.*;
-import static org.assertj.core.api.Assertions.*;
+import static de.ozgcloud.xta.test.app.factory.MessageMetaDataTestFactory.MESSAGE_ID;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.Mockito.*;
 
 import java.util.Optional;
 
 import genv3.de.xoev.transport.xta.x211.InvalidMessageIDException;
+import genv3.de.xoev.transport.xta.x211.LookupServiceRequest;
+import genv3.de.xoev.transport.xta.x211.LookupServiceResponse;
 import genv3.de.xoev.transport.xta.x211.TransportReport;
+import genv3.eu.osci.ws.x2014.x10.transport.PartyType;
+import lombok.SneakyThrows;
 import org.apache.cxf.ws.addressing.AttributedURIType;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
@@ -25,10 +30,6 @@ 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;
-import genv3.de.xoev.transport.xta.x211.LookupServiceResponse;
-import genv3.eu.osci.ws.x2014.x10.transport.PartyType;
-import lombok.SneakyThrows;
 
 public class ManagementPortImplTest {
 
@@ -135,6 +136,8 @@ public class ManagementPortImplTest {
 		private PartyType authorIdentifier;
 		@Mock
 		private XtaTransportReport xtaTransportReport;
+		@Mock
+		private TransportReport transportReport;
 
 		private XtaGetTransportReportRequest request;
 
@@ -154,7 +157,7 @@ public class ManagementPortImplTest {
 			@BeforeEach
 			void beforeEach() {
 				when(xtaMessageService.getTransportReport(request)).thenReturn(Optional.of(xtaTransportReport));
-				when(responseMapper.mapTransportReport(xtaTransportReport)).thenReturn(TRANSPORT_REPORT);
+				when(responseMapper.mapTransportReport(xtaTransportReport)).thenReturn(transportReport);
 			}
 
 			@DisplayName("should return")
@@ -162,7 +165,7 @@ public class ManagementPortImplTest {
 			void shouldReturn() {
 				var result = getTransportReport();
 
-				assertThat(result).contains(TRANSPORT_REPORT);
+				assertThat(result).isEqualTo(transportReport);
 			}
 		}
 
@@ -176,8 +179,10 @@ public class ManagementPortImplTest {
 			@Test
 			void shouldThrowException() {
 				when(xtaMessageService.getTransportReport(request)).thenReturn(Optional.empty());
-				when(exceptionMapper.createInvalidMessageIDException(any())).thenReturn(exception);
+				when(exceptionMapper.createInvalidMessageIDException(any(), any())).thenReturn(exception);
 
+				assertThatThrownBy(TestGetTransportReport.this::getTransportReport)
+						.isEqualTo(exception);
 			}
 		}
 
-- 
GitLab