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] 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