From 5fe0e1e5e55d4eba1a0d22a79cde31186b071743 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Tue, 25 Mar 2025 15:54:07 +0100 Subject: [PATCH 1/6] OZG-7609 use unsecured accesws to aggregation mappings for spring cloud config --- .../admin/reporting/AggregationMappingRepository.java | 7 +++++-- .../ReportingAggregationManagerSettingDtoService.java | 2 +- .../AggregationMappingEnvironmentSettingITCase.java | 3 --- .../reporting/AggregationMappingRepositoryITCase.java | 9 +++++++++ ...ReportingAggregationManagerSettingDtoServiceTest.java | 4 ++-- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingRepository.java b/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingRepository.java index 249aa175..437b5f0e 100644 --- a/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingRepository.java +++ b/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingRepository.java @@ -30,10 +30,13 @@ import org.springframework.data.mongodb.repository.Query; import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.security.access.annotation.Secured; -@Secured("ROLE_DATENBEAUFTRAGUNG") @RepositoryRestResource interface AggregationMappingRepository extends MongoRepository<AggregationMapping, String> { + @Override - @Query("{'_class': 'AggregationMapping'}") + @Secured("ROLE_DATENBEAUFTRAGUNG") List<AggregationMapping> findAll(); + + @Query("{}") + List<AggregationMapping> findAllUnsecured(); } diff --git a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java index afaaaed6..72197f81 100644 --- a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java +++ b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java @@ -40,7 +40,7 @@ class ReportingAggregationManagerSettingDtoService implements SettingDtoService @Override public ReportingAggregationManagerSettingDto getDataTransferObject() { - return mapToDto(repository.findAll()); + return mapToDto(repository.findAllUnsecured()); } ReportingAggregationManagerSettingDto mapToDto(List<AggregationMapping> aggregationMappings) { diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java index 6425ab46..d65fc2db 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java +++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java @@ -33,18 +33,15 @@ 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 diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java index 8012939c..9a0a9ca6 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java +++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java @@ -61,6 +61,15 @@ class AggregationMappingRepositoryITCase { assertThat(result).hasSize(1); } + @Test + void shouldLoadWithoutRole() { + operations.save(AggregationMappingTestFactory.create()); + + var result = repository.findAllUnsecured(); + + assertThat(result).hasSize(1); + } + @Test @WithMockUser void shouldThrowExceptionOnMissingRole() { diff --git a/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java b/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java index 41286953..db27eeb3 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java +++ b/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java @@ -88,13 +88,13 @@ class ReportingAggregationManagerSettingDtoServiceTest { void shouldCallRepository() { service.getDataTransferObject(); - verify(repository).findAll(); + verify(repository).findAllUnsecured(); } @Test void shouldCallMapToDto() { AggregationMapping mapping = AggregationMappingTestFactory.create(); - when(repository.findAll()).thenReturn(List.of(mapping)); + when(repository.findAllUnsecured()).thenReturn(List.of(mapping)); service.getDataTransferObject(); -- GitLab From 87bcc47d02734d8e3d356e251ce582d26a789b68 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Tue, 25 Mar 2025 17:16:07 +0100 Subject: [PATCH 2/6] OZG-7609 test with easier prefix --- ...ngAggregationManagerSettingDtoService.java | 2 +- .../settings/aggregation.yaml.tmpl | 41 +++++++++---------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java index 72197f81..5baa66b6 100644 --- a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java +++ b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java @@ -51,6 +51,6 @@ class ReportingAggregationManagerSettingDtoService implements SettingDtoService @Override public String getSettingKeyName() { - return "ozgcloud.aggregation"; + return "aggregation"; } } diff --git a/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl b/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl index 0b8a9c51..43cef678 100644 --- a/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl +++ b/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl @@ -1,21 +1,20 @@ -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 +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 586ad4e0ad415358aaaa9c16a1aba06d3e965b76 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Tue, 25 Mar 2025 17:27:13 +0100 Subject: [PATCH 3/6] Revert "OZG-7609 test with easier prefix" This reverts commit 87bcc47d02734d8e3d356e251ce582d26a789b68. --- ...ngAggregationManagerSettingDtoService.java | 2 +- .../settings/aggregation.yaml.tmpl | 41 ++++++++++--------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java index 5baa66b6..72197f81 100644 --- a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java +++ b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java @@ -51,6 +51,6 @@ class ReportingAggregationManagerSettingDtoService implements SettingDtoService @Override public String getSettingKeyName() { - return "aggregation"; + return "ozgcloud.aggregation"; } } diff --git a/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl b/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl index 43cef678..0b8a9c51 100644 --- a/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl +++ b/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl @@ -1,20 +1,21 @@ -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 +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 288a588644d835ffe4a3c13d2880cf13057acc7b Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Tue, 25 Mar 2025 17:54:55 +0100 Subject: [PATCH 4/6] OZG-7609 flatten PropertySource --- pom.xml | 6 ++++ .../setting/SettingEnvironmentRepository.java | 6 ++-- ...gationMappingEnvironmentSettingITCase.java | 34 +++++++++---------- ...actory.java => PropertiesTestFactory.java} | 6 ++-- .../setting/SettingEnvironmentITCase.java | 10 +++--- .../SettingEnvironmentRepositoryTest.java | 9 +++-- .../settings/aggregation.json.tmpl | 1 + .../settings/aggregation.yaml.tmpl | 21 ------------ 8 files changed, 43 insertions(+), 50 deletions(-) rename src/test/java/de/ozgcloud/admin/setting/{YamlTestFactory.java => PropertiesTestFactory.java} (97%) create mode 100644 src/test/resources/yamlTemplates/settings/aggregation.json.tmpl delete mode 100644 src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl diff --git a/pom.xml b/pom.xml index edad1443..30345bd5 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,7 @@ <zufi-manager.version>1.6.0</zufi-manager.version> <shedlock.version>5.16.0</shedlock.version> + <spring-vault-core.version>3.1.2</spring-vault-core.version> </properties> <dependencies> @@ -149,6 +150,11 @@ <artifactId>mapstruct-processor</artifactId> <version>${mapstruct.version}</version> </dependency> + <dependency> + <groupId>org.springframework.vault</groupId> + <artifactId>spring-vault-core</artifactId> + <version>${spring-vault-core.version}</version> + </dependency> <!-- commons --> <dependency> diff --git a/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java b/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java index a6e74eac..82193473 100644 --- a/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java +++ b/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java @@ -33,6 +33,7 @@ import org.springframework.cloud.config.environment.Environment; import org.springframework.cloud.config.environment.PropertySource; import org.springframework.cloud.config.server.environment.EnvironmentRepository; import org.springframework.stereotype.Component; +import org.springframework.vault.support.JsonMapFlattener; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -74,8 +75,9 @@ public class SettingEnvironmentRepository implements EnvironmentRepository { } PropertySource transformToPropertySource(ApplicationSettingDTO settingDTO) { - return new PropertySource(StringUtils.EMPTY, objectMapper.convertValue(settingDTO, new TypeReference<Map<String, Object>>() { - })); + return new PropertySource(StringUtils.EMPTY, + JsonMapFlattener.flatten(objectMapper.convertValue(settingDTO, new TypeReference<Map<String, Object>>() { + }))); } } diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java index d65fc2db..197adf56 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java +++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java @@ -36,7 +36,7 @@ import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; -import de.ozgcloud.admin.setting.YamlTestFactory; +import de.ozgcloud.admin.setting.PropertiesTestFactory; import de.ozgcloud.common.test.DataITCase; import lombok.SneakyThrows; @@ -63,36 +63,36 @@ public class AggregationMappingEnvironmentSettingITCase { var result = getAggregationSettings(); assertThat(result.andReturn().getResponse().getContentAsString()) - .isEqualTo(YamlTestFactory.createAggregationYaml()); + .isEqualTo(PropertiesTestFactory.createAggregationProperties()); } private ResultActions getAggregationSettings() throws Exception { - return mockMvc.perform(get("/configserver/OzgCloud_AggregationManager-any.yaml")) + return mockMvc.perform(get("/configserver/OzgCloud_AggregationManager/default")) .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) + .formEngineName(PropertiesTestFactory.FORM_ENGINE_NAME_1) + .formId(PropertiesTestFactory.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()) + .mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_1_1) + .targetPath(PropertiesTestFactory.TARGET_PATH_1_1).build()) + .mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_1_2) + .targetPath(PropertiesTestFactory.TARGET_PATH_1_2).build()) + .mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_1_3) + .targetPath(PropertiesTestFactory.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) + .formEngineName(PropertiesTestFactory.FORM_ENGINE_NAME_2) + .formId(PropertiesTestFactory.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()) + .mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_2_1) + .targetPath(PropertiesTestFactory.TARGET_PATH_2_1).build()) + .mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_2_2) + .targetPath(PropertiesTestFactory.TARGET_PATH_2_2).build()) .build(); mongoOperations.dropCollection(AggregationMapping.COLLECTION_NAME); diff --git a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java b/src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java similarity index 97% rename from src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java rename to src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java index 40ac3f16..3c149bd9 100644 --- a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java +++ b/src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java @@ -31,7 +31,7 @@ import de.ozgcloud.admin.setting.postfach.PostfachSettingBody; import de.ozgcloud.admin.setting.postfach.PostfachSettingBodyTestFactory; import de.ozgcloud.common.test.TestUtils; -public class YamlTestFactory { +public class PropertiesTestFactory { public static final PostfachSettingBody POSTFACH = PostfachSettingBodyTestFactory.create(); public static final String FORM_ENGINE_NAME_1 = LoremIpsum.getInstance().getWords(1); @@ -72,8 +72,8 @@ public class YamlTestFactory { return TestUtils.loadTextFile("yamlTemplates/settings/initial.yaml.tmpl"); } - public static String createAggregationYaml() { - return TestUtils.loadTextFile("yamlTemplates/settings/aggregation.yaml.tmpl", + public static String createAggregationProperties() { + return TestUtils.loadTextFile("yamlTemplates/settings/aggregation.json.tmpl", FORM_ENGINE_NAME_1, FORM_ID_1, SOURCE_PATH_1_1, diff --git a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java index 4fe44a5e..455c4825 100644 --- a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java +++ b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java @@ -80,7 +80,8 @@ class SettingEnvironmentITCase { void shouldHandleEmptySetting() { var result = getAlfaSettings(); - assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createInitialYaml()); + assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())) + .isEqualTo(PropertiesTestFactory.createInitialYaml()); } } @@ -97,7 +98,7 @@ class SettingEnvironmentITCase { void shouldReturnValuesForAlfa() { var result = getAlfaSettings(); - assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createAlfaYaml()); + assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(PropertiesTestFactory.createAlfaYaml()); } } @@ -122,7 +123,8 @@ class SettingEnvironmentITCase { void shouldHandleEmptySetting() { var result = getVorgangManagerSettings(); - assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createInitialYaml()); + assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())) + .isEqualTo(PropertiesTestFactory.createInitialYaml()); } } @@ -140,7 +142,7 @@ class SettingEnvironmentITCase { var result = getVorgangManagerSettings(); assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())) - .isEqualTo(YamlTestFactory.createVorgangManagerYaml()); + .isEqualTo(PropertiesTestFactory.createVorgangManagerYaml()); } } diff --git a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java index b59b5edc..25e1a2ac 100644 --- a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java +++ b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java @@ -199,7 +199,10 @@ class SettingEnvironmentRepositoryTest { @Getter private ApplicationSettingDTO attribute = new ApplicationSettingDTO() { @Getter - private String nestedAttribute = "innerValue"; + private ApplicationSettingDTO nestedAttribute = new ApplicationSettingDTO() { + @Getter + private String nestedAttribute = "innerValue"; + }; }; }; @@ -213,8 +216,8 @@ class SettingEnvironmentRepositoryTest { } @Test - void shouldReturnPropertySourceOfNestedObject() { - var expectedPropertySource = new PropertySource(StringUtils.EMPTY, Map.of("attribute.nestedAttribute", "innerValue")); + void shouldReturnPropertySourceOfFlattenedNestedObject() { + var expectedPropertySource = new PropertySource(StringUtils.EMPTY, Map.of("attribute.nestedAttribute.nestedAttribute", "innerValue")); var resultPropertySource = repository.transformToPropertySource(nestedSettingDTO); diff --git a/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl b/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl new file mode 100644 index 00000000..b4db7c45 --- /dev/null +++ b/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl @@ -0,0 +1 @@ +{"name":"OzgCloud_AggregationManager","profiles":["default"],"label":null,"version":null,"state":null,"propertySources":[{"name":"","source":{"ozgcloud.aggregation.aggregationMappings[0].formIdentifier.formEngineName":"%s","ozgcloud.aggregation.aggregationMappings[0].formIdentifier.formId":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[0].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[0].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[1].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[1].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[2].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[2].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[1].formIdentifier.formEngineName":"%s","ozgcloud.aggregation.aggregationMappings[1].formIdentifier.formId":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[0].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[0].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[1].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[1].targetPath":"%s"}}]} \ No newline at end of file diff --git a/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl b/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl deleted file mode 100644 index 0b8a9c51..00000000 --- a/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl +++ /dev/null @@ -1,21 +0,0 @@ -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 371cbe042ab19406cc9cda20e03124ec70b9c98c Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Tue, 25 Mar 2025 17:59:13 +0100 Subject: [PATCH 5/6] OZG-7609 fix itcase --- src/test/resources/yamlTemplates/settings/initial.yaml.tmpl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/resources/yamlTemplates/settings/initial.yaml.tmpl b/src/test/resources/yamlTemplates/settings/initial.yaml.tmpl index 1a6ddf88..7d41cbfd 100644 --- a/src/test/resources/yamlTemplates/settings/initial.yaml.tmpl +++ b/src/test/resources/yamlTemplates/settings/initial.yaml.tmpl @@ -1,4 +1,3 @@ ozgcloud: postfach: signatur: null - organisationsEinheitSettings: {} -- GitLab From 20c9d2ced6368f73d8f94ef58a9e0aeba24b1eb1 Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Thu, 27 Mar 2025 10:39:44 +0100 Subject: [PATCH 6/6] OZG-7609 apply code review changes --- .../AggregationMappingRepository.java | 2 +- ...ngAggregationManagerSettingDtoService.java | 2 +- ...gationMappingEnvironmentSettingITCase.java | 2 +- .../AggregationMappingRepositoryITCase.java | 46 +++++++++++-------- ...gregationManagerSettingDtoServiceTest.java | 4 +- .../admin/setting/PropertiesTestFactory.java | 2 +- .../settings/aggregation.json.tmpl | 30 ++++++++++++ .../settings/aggregation.json.tmpl | 1 - 8 files changed, 62 insertions(+), 27 deletions(-) create mode 100644 src/test/resources/jsonTemplates/settings/aggregation.json.tmpl delete mode 100644 src/test/resources/yamlTemplates/settings/aggregation.json.tmpl diff --git a/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingRepository.java b/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingRepository.java index 437b5f0e..f762a367 100644 --- a/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingRepository.java +++ b/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingRepository.java @@ -38,5 +38,5 @@ interface AggregationMappingRepository extends MongoRepository<AggregationMappin List<AggregationMapping> findAll(); @Query("{}") - List<AggregationMapping> findAllUnsecured(); + List<AggregationMapping> findAllBypassAuth(); } diff --git a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java index 72197f81..a1fcc5f3 100644 --- a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java +++ b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java @@ -40,7 +40,7 @@ class ReportingAggregationManagerSettingDtoService implements SettingDtoService @Override public ReportingAggregationManagerSettingDto getDataTransferObject() { - return mapToDto(repository.findAllUnsecured()); + return mapToDto(repository.findAllBypassAuth()); } ReportingAggregationManagerSettingDto mapToDto(List<AggregationMapping> aggregationMappings) { diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java index 197adf56..8f7ff069 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java +++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java @@ -63,7 +63,7 @@ public class AggregationMappingEnvironmentSettingITCase { var result = getAggregationSettings(); assertThat(result.andReturn().getResponse().getContentAsString()) - .isEqualTo(PropertiesTestFactory.createAggregationProperties()); + .isEqualToIgnoringWhitespace(PropertiesTestFactory.createAggregationProperties()); } private ResultActions getAggregationSettings() throws Exception { diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java index 9a0a9ca6..19356279 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java +++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java @@ -26,6 +26,7 @@ package de.ozgcloud.admin.reporting; import static org.assertj.core.api.Assertions.*; 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.data.mongodb.core.MongoOperations; @@ -50,32 +51,37 @@ class AggregationMappingRepositoryITCase { operations.dropCollection(AggregationMapping.COLLECTION_NAME); } - @Test - @WithMockUser(roles = UserRole.DATENBEAUFTRAGUNG) - void shouldLoadOnlyFieldMapping() { - operations.save(AggregationMappingTestFactory.create()); - operations.save(SettingTestFactory.create()); + @Nested + class TestFindAll { + @Test + @WithMockUser(roles = UserRole.DATENBEAUFTRAGUNG) + void shouldLoadOnlyFieldMapping() { + operations.save(AggregationMappingTestFactory.create()); + operations.save(SettingTestFactory.create()); - var result = repository.findAll(); + var result = repository.findAll(); - assertThat(result).hasSize(1); - } - - @Test - void shouldLoadWithoutRole() { - operations.save(AggregationMappingTestFactory.create()); + assertThat(result).hasSize(1); + } - var result = repository.findAllUnsecured(); + @Test + @WithMockUser + void shouldThrowExceptionOnMissingRole() { + operations.save(AggregationMappingTestFactory.create()); - assertThat(result).hasSize(1); + assertThatThrownBy(() -> repository.findAll()).isInstanceOf(AuthorizationDeniedException.class); + } } - @Test - @WithMockUser - void shouldThrowExceptionOnMissingRole() { - operations.save(AggregationMappingTestFactory.create()); + @Nested + class TestFindAllBypassAuth { + @Test + void shouldLoadWithoutRole() { + operations.save(AggregationMappingTestFactory.create()); - assertThatThrownBy(() -> repository.findAll()).isInstanceOf(AuthorizationDeniedException.class); - } + var result = repository.findAllBypassAuth(); + assertThat(result).hasSize(1); + } + } } diff --git a/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java b/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java index db27eeb3..aae1ec4b 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java +++ b/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java @@ -88,13 +88,13 @@ class ReportingAggregationManagerSettingDtoServiceTest { void shouldCallRepository() { service.getDataTransferObject(); - verify(repository).findAllUnsecured(); + verify(repository).findAllBypassAuth(); } @Test void shouldCallMapToDto() { AggregationMapping mapping = AggregationMappingTestFactory.create(); - when(repository.findAllUnsecured()).thenReturn(List.of(mapping)); + when(repository.findAllBypassAuth()).thenReturn(List.of(mapping)); service.getDataTransferObject(); diff --git a/src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java b/src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java index 3c149bd9..62df9cc7 100644 --- a/src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java +++ b/src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java @@ -73,7 +73,7 @@ public class PropertiesTestFactory { } public static String createAggregationProperties() { - return TestUtils.loadTextFile("yamlTemplates/settings/aggregation.json.tmpl", + return TestUtils.loadTextFile("jsonTemplates/settings/aggregation.json.tmpl", FORM_ENGINE_NAME_1, FORM_ID_1, SOURCE_PATH_1_1, diff --git a/src/test/resources/jsonTemplates/settings/aggregation.json.tmpl b/src/test/resources/jsonTemplates/settings/aggregation.json.tmpl new file mode 100644 index 00000000..ce56cc5a --- /dev/null +++ b/src/test/resources/jsonTemplates/settings/aggregation.json.tmpl @@ -0,0 +1,30 @@ +{ + "name": "OzgCloud_AggregationManager", + "profiles": [ + "default" + ], + "label": null, + "version": null, + "state": null, + "propertySources": [ + { + "name": "", + "source": { + "ozgcloud.aggregation.aggregationMappings[0].formIdentifier.formEngineName": "%s", + "ozgcloud.aggregation.aggregationMappings[0].formIdentifier.formId": "%s", + "ozgcloud.aggregation.aggregationMappings[0].fieldMappings[0].sourcePath": "%s", + "ozgcloud.aggregation.aggregationMappings[0].fieldMappings[0].targetPath": "%s", + "ozgcloud.aggregation.aggregationMappings[0].fieldMappings[1].sourcePath": "%s", + "ozgcloud.aggregation.aggregationMappings[0].fieldMappings[1].targetPath": "%s", + "ozgcloud.aggregation.aggregationMappings[0].fieldMappings[2].sourcePath": "%s", + "ozgcloud.aggregation.aggregationMappings[0].fieldMappings[2].targetPath": "%s", + "ozgcloud.aggregation.aggregationMappings[1].formIdentifier.formEngineName": "%s", + "ozgcloud.aggregation.aggregationMappings[1].formIdentifier.formId": "%s", + "ozgcloud.aggregation.aggregationMappings[1].fieldMappings[0].sourcePath": "%s", + "ozgcloud.aggregation.aggregationMappings[1].fieldMappings[0].targetPath": "%s", + "ozgcloud.aggregation.aggregationMappings[1].fieldMappings[1].sourcePath": "%s", + "ozgcloud.aggregation.aggregationMappings[1].fieldMappings[1].targetPath": "%s" + } + } + ] +} \ No newline at end of file diff --git a/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl b/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl deleted file mode 100644 index b4db7c45..00000000 --- a/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl +++ /dev/null @@ -1 +0,0 @@ -{"name":"OzgCloud_AggregationManager","profiles":["default"],"label":null,"version":null,"state":null,"propertySources":[{"name":"","source":{"ozgcloud.aggregation.aggregationMappings[0].formIdentifier.formEngineName":"%s","ozgcloud.aggregation.aggregationMappings[0].formIdentifier.formId":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[0].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[0].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[1].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[1].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[2].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[2].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[1].formIdentifier.formEngineName":"%s","ozgcloud.aggregation.aggregationMappings[1].formIdentifier.formId":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[0].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[0].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[1].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[1].targetPath":"%s"}}]} \ No newline at end of file -- GitLab