From dc8dc5bd4387a00b1d1aabd8de79923bd5b716d1 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 25 Jun 2024 11:07:21 +0200
Subject: [PATCH] OZG-5835 map formId, requestId and set vorgangNummer

---
 .../eingang/formcycle/FormCycleFormDataMapper.java    |  1 +
 .../eingang/formcycle/FormDataController.java         |  4 ++--
 .../formcycle/FormCycleFormDataMapperTest.java        |  6 +++++-
 .../formcycle/FormCycleFormHeaderTestFactory.java     |  8 +++++---
 .../eingang/formcycle/FormDataControllerTest.java     | 11 +++++------
 .../src/main/protobuf/form-data.model.proto           |  2 ++
 6 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java
index 40b324dbd..8db87c762 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java
@@ -43,5 +43,6 @@ public interface FormCycleFormDataMapper {
 	@Mapping(target = "zustaendigeStelle.organisationseinheitenId", source = "header.organisationsEinheitId")
 	@Mapping(target = "header.formEngineName", constant = "FormCycle")
 	@Mapping(target = "header.createdAt", source = "header.receivedAt")
+	@Mapping(target = "header.requestId", source = "header.requestId", defaultExpression = "java(java.util.UUID.randomUUID().toString())")
 	FormData toFormData(FormCycleFormData fcFormData);
 }
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 06206c9f9..4e6fbc510 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
@@ -81,11 +81,11 @@ class FormDataController {
 
 		semantikAdapter.processFormData(mappedFormData);
 
-		return FormCycleConfirmationResponse.newBuilder().setVorgangNummer(mappedFormData.getHeader().getRequestId()).build();
+		return FormCycleConfirmationResponse.newBuilder().setVorgangNummer(mappedFormData.getHeader().getVorgangNummer()).build();
 	}
 
 	private FormData addVorgangNummer(FormData mappedFormData) {
-		var formDataHeader = mappedFormData.getHeader().toBuilder().requestId(vorgangNummerSupplier.get()).build();
+		var formDataHeader = mappedFormData.getHeader().toBuilder().vorgangNummer(vorgangNummerSupplier.get()).build();
 		return mappedFormData.toBuilder().header(formDataHeader).build();
 	}
 
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java
index e12156bc8..feb214ccc 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java
@@ -31,6 +31,7 @@ import org.mapstruct.factory.Mappers;
 import org.mockito.InjectMocks;
 import org.mockito.Spy;
 
+import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory;
 import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper;
 
 class FormCycleFormDataMapperTest {
@@ -46,9 +47,12 @@ class FormCycleFormDataMapperTest {
 
 		@Test
 		void shouldMapHeader() {
+			var expectedFormHeader = FormHeaderTestFactory.create();
+
 			var mapped = mapper.toFormData(FormCycleFormDataTestFactory.create());
 
-			assertThat(mapped.getHeader()).isNotNull();
+			assertThat(mapped.getHeader()).usingRecursiveComparison()
+					.ignoringFields("vorgangNummer", "sender", "formEngineName", "serviceKonto").isEqualTo(expectedFormHeader);
 		}
 
 		@Test
diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java
index 04a0737a8..3065efa67 100644
--- a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java
+++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java
@@ -23,12 +23,12 @@
  */
 package de.ozgcloud.eingang.formcycle;
 
+import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory;
 import de.ozgcloud.eingang.formcycle.FormCycleFormHeader.Builder;
 
 public class FormCycleFormHeaderTestFactory {
 
-	static final String RECEIVED_AT = "2022-12-24T18:00:00Z";
-	static final String FORM_NAME = "test form 1";
+	static final String RECEIVED_AT = FormHeaderTestFactory.CREATED_AT_STR;
 	static final String ORGANISATIONSEINHEIT_ID = "9030229";
 
 	static FormCycleFormHeader create() {
@@ -37,8 +37,10 @@ public class FormCycleFormHeaderTestFactory {
 
 	static Builder createBuilder() {
 		return FormCycleFormHeader.newBuilder()
-				.setFormName(FORM_NAME)
+				.setRequestId(FormHeaderTestFactory.REQUEST_ID)
+				.setFormName(FormHeaderTestFactory.FORM_NAME)
 				.setReceivedAt(RECEIVED_AT)
+				.setFormId(FormHeaderTestFactory.FORM_ID)
 				.setOrganisationsEinheitId(ORGANISATIONSEINHEIT_ID);
 	}
 }
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 25a588403..06704947a 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
@@ -51,6 +51,7 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import de.ozgcloud.eingang.common.formdata.FormData;
 import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
 import de.ozgcloud.eingang.common.formdata.FormHeader;
+import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory;
 import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory;
 import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory;
 import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress;
@@ -87,8 +88,6 @@ class FormDataControllerTest {
 	@Nested
 	class ReceiveFormData {
 
-		static final String VORGANG_NUMMER = "VorgangNummer";
-
 		private FormData mappedFormData = FormDataTestFactory.create();
 
 		@Captor
@@ -98,7 +97,7 @@ class FormDataControllerTest {
 		void init() {
 			when(htmlCleaner.clean(any())).thenReturn(mappedFormData);
 			when(mapper.toFormData(any())).thenReturn(mappedFormData);
-			when(vorgangNummerSupplier.get()).thenReturn(VORGANG_NUMMER);
+			when(vorgangNummerSupplier.get()).thenReturn(FormHeaderTestFactory.VORGANG_NUMMER);
 		}
 
 		@Test
@@ -120,7 +119,7 @@ class FormDataControllerTest {
 			var confirmation = FormCycleConfirmationResponse.parseFrom(
 					doPostRequest().andReturn().getResponse().getContentAsByteArray());
 
-			assertThat(confirmation.getVorgangNummer()).isEqualTo(VORGANG_NUMMER);
+			assertThat(confirmation.getVorgangNummer()).isEqualTo(FormHeaderTestFactory.VORGANG_NUMMER);
 		}
 
 		@Test
@@ -128,7 +127,7 @@ class FormDataControllerTest {
 			doPostRequest();
 
 			verify(semantikAdapter).processFormData(formDataCaptor.capture());
-			assertThat(formDataCaptor.getValue().getHeader().getRequestId()).isEqualTo(VORGANG_NUMMER);
+			assertThat(formDataCaptor.getValue().getHeader().getRequestId()).isEqualTo(FormHeaderTestFactory.REQUEST_ID);
 		}
 
 		@Test
@@ -151,7 +150,7 @@ class FormDataControllerTest {
 
 			verify(semantikAdapter).processFormData(formDataCaptor.capture());
 			assertThat(formDataCaptor.getValue()).usingRecursiveComparison()
-					.ignoringFields("representations", "attachments", "numberOfAttachments", "header.requestId")
+					.ignoringFields("representations", "attachments", "numberOfAttachments")
 					.isEqualTo(mappedFormData);
 		}
 
diff --git a/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto b/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto
index ccac014c1..28ff49eba 100644
--- a/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto
+++ b/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto
@@ -47,6 +47,8 @@ message FormCycleFormHeader {
 	string receivedAt = 1;
 	string formName = 2;
 	string organisationsEinheitId = 3;
+	string formId = 4;
+	string requestId = 5;
 }
 
 message FormCycleServiceKonto {
-- 
GitLab