From 2f3bf4e61e744460f79bd37650a2cd05e0e499f6 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 10 Aug 2023 17:57:19 +0200
Subject: [PATCH] OZG-4109 [fix] don't set empty service konto

---
 .../eingang/formcycle/FormDataController.java | 31 ++++++++-----------
 .../formcycle/FormDataControllerTest.java     | 13 ++++++--
 2 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java
index 49e23df0d..dbae0279f 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java
@@ -151,30 +151,25 @@ class FormDataController {
 	}
 
 	FormData addServiceKonto(FormCycleFormData formData, FormData mappedFormData) {
-		mappedFormData.getHeader().setServiceKonto(buildServiceKonto(formData.getServiceKonto()));
+		if (formData.hasServiceKonto()) {
+			mappedFormData.getHeader().setServiceKonto(buildServiceKonto(formData.getServiceKonto()));
+		}
 		return mappedFormData;
 	}
 
-	private ServiceKonto buildServiceKonto(FormCycleServiceKonto formCycleServiceKonto) {
-		return Optional.ofNullable(formCycleServiceKonto)
-				.map(sk -> ServiceKonto.builder()
-						.type(sk.getType())
-						.postfachAddress(buildPostfachAddress(sk))
-						.build())
-				.orElse(null);
+	ServiceKonto buildServiceKonto(FormCycleServiceKonto formCycleServiceKonto) {
+		return ServiceKonto.builder()
+				.type(formCycleServiceKonto.getType())
+				.postfachAddress(buildPostfachAddress(formCycleServiceKonto))
+				.build();
 	}
 
 	PostfachAddress buildPostfachAddress(FormCycleServiceKonto formCycleServiceKonto) {
-
-		return Optional.ofNullable(formCycleServiceKonto.getAddress())
-				.map(address -> PostfachAddress.builder()
-						.identifier(Optional.ofNullable(address)
-								.map(FormCyclePostfachAddress::getIdentifier)
-								.map(this::buildPostfachId)
-								.orElse(null))
-						.version(address.getVersion())
-						.build())
-				.orElse(null);
+		if (!formCycleServiceKonto.hasAddress()) {
+			return null;
+		}
+		var address = formCycleServiceKonto.getAddress();
+		return PostfachAddress.builder().identifier(buildPostfachId(address.getIdentifier())).version(address.getVersion()).build();
 	}
 
 	private StringBasedIdentifier buildPostfachId(String identifier) {
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
index e64a394f2..529668d93 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java
@@ -41,6 +41,7 @@ import org.mockito.ArgumentCaptor;
 import org.mockito.Captor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.Spy;
 import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.ResultActions;
@@ -59,6 +60,7 @@ import lombok.SneakyThrows;
 
 class FormDataControllerTest {
 
+	@Spy
 	@InjectMocks
 	private FormDataController controller;
 
@@ -293,6 +295,13 @@ class FormDataControllerTest {
 			assertThat(getServiceKontoType(formData)).isEqualTo(FormCycleServiceKontoTestFactory.TYPE);
 		}
 
+		@Test
+		void shouldNotMapEmptyServiceKonto() {
+			controller.addServiceKonto(FormCycleFormData.newBuilder().build(), buildEmptyFormDataWithHeader());
+
+			verify(controller, never()).buildServiceKonto(any());
+		}
+
 		String getServiceKontoType(FormData formData) {
 			return formData.getHeader().getServiceKonto().getType();
 		}
@@ -309,9 +318,9 @@ class FormDataControllerTest {
 
 			@Test
 			void shouldNotMapEmptyPostkorbId() {
-				var formData = controller.addServiceKonto(FormCycleFormData.newBuilder().build(), buildEmptyFormDataWithHeader());
+				var postfachAddress = controller.buildPostfachAddress(FormCycleServiceKonto.newBuilder().build());
 
-				assertThat(getPostfachIdFormData(formData)).isBlank();
+				assertThat(postfachAddress).isNull();
 			}
 
 			@Test
-- 
GitLab