From 4d9688d8a0c255604e3f9e210a6e97802d5f8a19 Mon Sep 17 00:00:00 2001
From: Felix Reichenbach <felix.reichenbach@mgm-tp.com>
Date: Tue, 18 Feb 2025 15:01:56 +0100
Subject: [PATCH 1/2] OZG-7609 add ozgcloud prefix to aggregation properties
 and ITCase

---
 ...ngAggregationManagerSettingDtoService.java |  2 +-
 ...gationMappingEnvironmentSettingITCase.java | 81 +++++++++++++++++++
 .../admin/setting/YamlTestFactory.java        | 34 ++++++++
 .../settings/aggregation.yaml.tmpl            | 21 +++++
 4 files changed, 137 insertions(+), 1 deletion(-)
 create mode 100644 src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java
 create mode 100644 src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl

diff --git a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java
index acb46bf4..0e0ad48f 100644
--- a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java
+++ b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java
@@ -52,6 +52,6 @@ class ReportingAggregationManagerSettingDtoService implements SettingDtoService
 
 	@Override
 	public String getSettingKeyName() {
-		return "aggregation";
+		return "ozgcloud.aggregation";
 	}
 }
diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java
new file mode 100644
index 00000000..a7f20f9d
--- /dev/null
+++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java
@@ -0,0 +1,81 @@
+package de.ozgcloud.admin.reporting;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.security.test.context.support.WithMockUser;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.ResultActions;
+
+import de.ozgcloud.admin.common.user.UserRole;
+import de.ozgcloud.admin.setting.YamlTestFactory;
+import de.ozgcloud.common.test.DataITCase;
+import lombok.SneakyThrows;
+
+@DataITCase
+@AutoConfigureMockMvc
+@WithMockUser(roles = UserRole.DATENBEAUFTRAGUNG)
+public class AggregationMappingEnvironmentSettingITCase {
+
+	@Autowired
+	private MockMvc mockMvc;
+	@Autowired
+	private MongoOperations mongoOperations;
+
+	@Nested
+	class TestGetAggregationSettings {
+
+		@BeforeEach
+		void fillDb() {
+			fillDbWithAggregationMappings();
+		}
+
+		@Test
+		@SneakyThrows
+		void shouldReturnValuesForAggregationManager() {
+			var result = getAggregationSettings();
+
+			assertThat(result.andReturn().getResponse().getContentAsString()).isEqualTo(YamlTestFactory.createAggregationYaml());
+		}
+
+		private ResultActions getAggregationSettings() throws Exception {
+			return mockMvc.perform(get("/configserver/OzgCloud_AggregationManager-any.yaml")).andExpect(status().isOk());
+		}
+
+		private void fillDbWithAggregationMappings() {
+			var aggregationMapping1 = AggregationMapping.builder()
+					.formIdentifier(AggregationMapping.FormIdentifier.builder()
+							.formEngineName(YamlTestFactory.FORM_ENGINE_NAME_1)
+							.formId(YamlTestFactory.FORM_ID_1)
+							.build())
+					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_1_1)
+							.targetPath(YamlTestFactory.TARGET_PATH_1_1).build())
+					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_1_2)
+							.targetPath(YamlTestFactory.TARGET_PATH_1_2).build())
+					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_1_3)
+							.targetPath(YamlTestFactory.TARGET_PATH_1_3).build())
+					.build();
+			var aggregationMapping2 = AggregationMapping.builder()
+					.formIdentifier(AggregationMapping.FormIdentifier.builder()
+							.formEngineName(YamlTestFactory.FORM_ENGINE_NAME_2)
+							.formId(YamlTestFactory.FORM_ID_2)
+							.build())
+					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_2_1)
+							.targetPath(YamlTestFactory.TARGET_PATH_2_1).build())
+					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_2_2)
+							.targetPath(YamlTestFactory.TARGET_PATH_2_2).build())
+					.build();
+
+			mongoOperations.dropCollection("settings");
+			mongoOperations.save(aggregationMapping1);
+			mongoOperations.save(aggregationMapping2);
+		}
+	}
+}
diff --git a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java b/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java
index e6b1c019..40ac3f16 100644
--- a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java
+++ b/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java
@@ -23,6 +23,8 @@
  */
 package de.ozgcloud.admin.setting;
 
+import com.thedeanda.lorem.LoremIpsum;
+
 import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettingsTestFactory;
 import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory;
 import de.ozgcloud.admin.setting.postfach.PostfachSettingBody;
@@ -32,6 +34,20 @@ import de.ozgcloud.common.test.TestUtils;
 public class YamlTestFactory {
 
 	public static final PostfachSettingBody POSTFACH = PostfachSettingBodyTestFactory.create();
+	public static final String FORM_ENGINE_NAME_1 = LoremIpsum.getInstance().getWords(1);
+	public static final String FORM_ID_1 = LoremIpsum.getInstance().getWords(1);
+	public static final String SOURCE_PATH_1_1 = LoremIpsum.getInstance().getWords(1);
+	public static final String TARGET_PATH_1_1 = LoremIpsum.getInstance().getWords(1);
+	public static final String SOURCE_PATH_1_2 = LoremIpsum.getInstance().getWords(1);
+	public static final String TARGET_PATH_1_2 = LoremIpsum.getInstance().getWords(1);
+	public static final String SOURCE_PATH_1_3 = LoremIpsum.getInstance().getWords(1);
+	public static final String TARGET_PATH_1_3 = LoremIpsum.getInstance().getWords(1);
+	public static final String FORM_ENGINE_NAME_2 = LoremIpsum.getInstance().getWords(1);
+	public static final String FORM_ID_2 = LoremIpsum.getInstance().getWords(1);
+	public static final String SOURCE_PATH_2_1 = LoremIpsum.getInstance().getWords(1);
+	public static final String TARGET_PATH_2_1 = LoremIpsum.getInstance().getWords(1);
+	public static final String SOURCE_PATH_2_2 = LoremIpsum.getInstance().getWords(1);
+	public static final String TARGET_PATH_2_2 = LoremIpsum.getInstance().getWords(1);
 
 	public static String createVorgangManagerYaml() {
 		return TestUtils.loadTextFile("yamlTemplates/settings/vorgangManager.yaml.tmpl",
@@ -55,4 +71,22 @@ public class YamlTestFactory {
 	public static String createInitialYaml() {
 		return TestUtils.loadTextFile("yamlTemplates/settings/initial.yaml.tmpl");
 	}
+
+	public static String createAggregationYaml() {
+		return TestUtils.loadTextFile("yamlTemplates/settings/aggregation.yaml.tmpl",
+				FORM_ENGINE_NAME_1,
+				FORM_ID_1,
+				SOURCE_PATH_1_1,
+				TARGET_PATH_1_1,
+				SOURCE_PATH_1_2,
+				TARGET_PATH_1_2,
+				SOURCE_PATH_1_3,
+				TARGET_PATH_1_3,
+				FORM_ENGINE_NAME_2,
+				FORM_ID_2,
+				SOURCE_PATH_2_1,
+				TARGET_PATH_2_1,
+				SOURCE_PATH_2_2,
+				TARGET_PATH_2_2);
+	}
 }
diff --git a/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl b/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl
new file mode 100644
index 00000000..0b8a9c51
--- /dev/null
+++ b/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl
@@ -0,0 +1,21 @@
+ozgcloud:
+  aggregation:
+    aggregationMappings:
+    - formIdentifier:
+        formEngineName: %s
+        formId: %s
+      fieldMappings:
+      - sourcePath: %s
+        targetPath: %s
+      - sourcePath: %s
+        targetPath: %s
+      - sourcePath: %s
+        targetPath: %s
+    - formIdentifier:
+        formEngineName: %s
+        formId: %s
+      fieldMappings:
+      - sourcePath: %s
+        targetPath: %s
+      - sourcePath: %s
+        targetPath: %s
-- 
GitLab


From 565809489cc9ea4df4630183519a283b89073fde Mon Sep 17 00:00:00 2001
From: Felix Reichenbach <felix.reichenbach@mgm-tp.com>
Date: Fri, 21 Feb 2025 11:04:35 +0100
Subject: [PATCH 2/2] OZG-7609 add missing license header

---
 ...gationMappingEnvironmentSettingITCase.java | 29 +++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java
index a7f20f9d..0457a9e3 100644
--- a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java
+++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java
@@ -1,3 +1,26 @@
+/*
+ * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
 package de.ozgcloud.admin.reporting;
 
 import static org.assertj.core.api.Assertions.*;
@@ -42,11 +65,13 @@ public class AggregationMappingEnvironmentSettingITCase {
 		void shouldReturnValuesForAggregationManager() {
 			var result = getAggregationSettings();
 
-			assertThat(result.andReturn().getResponse().getContentAsString()).isEqualTo(YamlTestFactory.createAggregationYaml());
+			assertThat(result.andReturn().getResponse().getContentAsString())
+					.isEqualTo(YamlTestFactory.createAggregationYaml());
 		}
 
 		private ResultActions getAggregationSettings() throws Exception {
-			return mockMvc.perform(get("/configserver/OzgCloud_AggregationManager-any.yaml")).andExpect(status().isOk());
+			return mockMvc.perform(get("/configserver/OzgCloud_AggregationManager-any.yaml"))
+					.andExpect(status().isOk());
 		}
 
 		private void fillDbWithAggregationMappings() {
-- 
GitLab