diff --git a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java index acb46bf40ebaf81a11b896ed6c2d55c7048f29e7..0e0ad48f395146377f054202154acad18819ccae 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 0000000000000000000000000000000000000000..0457a9e38745efb52c02b6c24edd9a5169cd6073 --- /dev/null +++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java @@ -0,0 +1,106 @@ +/* + * 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.*; +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 e6b1c0195b264005203eda0694d11bd77b5b1cf7..40ac3f169a6f6d28409515e1a89d38b39bfc918a 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 0000000000000000000000000000000000000000..0b8a9c513f6ed3a08f3b91f081bfcf583dbfd62a --- /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