Skip to content
Snippets Groups Projects
Commit 8a2ad1b6 authored by Tobias Bruns's avatar Tobias Bruns
Browse files

OZG-6988 fix loading via configserver endpoint without role

parent 4df6f027
No related branches found
No related tags found
1 merge request!3Ozg 6988 add reporting
...@@ -23,9 +23,16 @@ ...@@ -23,9 +23,16 @@
*/ */
package de.ozgcloud.admin.common; package de.ozgcloud.admin.common;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DtoService { public @interface DtoService {
String[] value(); String[] value();
......
...@@ -42,13 +42,15 @@ import lombok.ToString; ...@@ -42,13 +42,15 @@ import lombok.ToString;
import lombok.extern.jackson.Jacksonized; import lombok.extern.jackson.Jacksonized;
@Document("settings") @Document("settings")
@TypeAlias("AggregationMapping") @TypeAlias(AggregationMapping.TYPE_ALIAS)
@Jacksonized @Jacksonized
@Builder @Builder
@Getter @Getter
@ToString @ToString
public class AggregationMapping { public class AggregationMapping {
public static final String TYPE_ALIAS = "AggregationMapping";
@Id @Id
@JsonIgnore @JsonIgnore
private String id; private String id;
......
...@@ -28,18 +28,20 @@ import java.util.stream.Stream; ...@@ -28,18 +28,20 @@ import java.util.stream.Stream;
import de.ozgcloud.admin.common.DtoService; import de.ozgcloud.admin.common.DtoService;
import de.ozgcloud.admin.common.SettingDtoService; import de.ozgcloud.admin.common.SettingDtoService;
import de.ozgcloud.admin.setting.SettingConstants; import de.ozgcloud.admin.setting.SettingConstants;
import de.ozgcloud.admin.setting.SettingRepository;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor @RequiredArgsConstructor
@DtoService(SettingConstants.AGGREGATION_MANAGER) @DtoService(SettingConstants.AGGREGATION_MANAGER)
class ReportingAggregationManagerSettingDtoService implements SettingDtoService { class ReportingAggregationManagerSettingDtoService implements SettingDtoService {
private final AggregationMappingRepository repository;
private final AggregationMappingMapper mapper; private final AggregationMappingMapper mapper;
private final SettingRepository repository;
@Override @Override
public ReportingAggregationManagerSettingDto getDataTransferObject() { public ReportingAggregationManagerSettingDto getDataTransferObject() {
return mapToDto(repository.findAll().stream()); return mapToDto(repository.findByType("AggregationMapping", AggregationMapping.class));
} }
ReportingAggregationManagerSettingDto mapToDto(Stream<AggregationMapping> settings) { ReportingAggregationManagerSettingDto mapToDto(Stream<AggregationMapping> settings) {
......
...@@ -23,15 +23,25 @@ ...@@ -23,15 +23,25 @@
*/ */
package de.ozgcloud.admin.setting; package de.ozgcloud.admin.setting;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Stream;
import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.security.access.annotation.Secured; import org.springframework.security.access.annotation.Secured;
@Secured("ROLE_ADMIN_ADMIN")
@RepositoryRestResource(collectionResourceRel = SettingConstants.REL, path = SettingConstants.PATH) @RepositoryRestResource(collectionResourceRel = SettingConstants.REL, path = SettingConstants.PATH)
interface SettingRepository extends MongoRepository<Setting, String> { public interface SettingRepository extends MongoRepository<Setting, String> {
@Secured("ROLE_ADMIN_ADMIN")
@Override
@Query("{'_class': 'Setting'}")
List<Setting> findAll();
Optional<Setting> findOneByName(String name); Optional<Setting> findOneByName(String name);
@Query("{'_class': ?0}")
<T> Stream<T> findByType(String typeName, Class<T> clazz);
} }
...@@ -28,7 +28,7 @@ import java.util.UUID; ...@@ -28,7 +28,7 @@ import java.util.UUID;
import de.ozgcloud.admin.reporting.AggregationMapping.FieldMapping; import de.ozgcloud.admin.reporting.AggregationMapping.FieldMapping;
import de.ozgcloud.admin.reporting.AggregationMapping.FormIdentifier; import de.ozgcloud.admin.reporting.AggregationMapping.FormIdentifier;
class AggregationMappingTestFactory { public class AggregationMappingTestFactory {
public static final String ID = UUID.randomUUID().toString(); public static final String ID = UUID.randomUUID().toString();
public static final String FORM_ENGINE_NAME = "A12"; public static final String FORM_ENGINE_NAME = "A12";
......
...@@ -27,7 +27,6 @@ import static org.assertj.core.api.Assertions.*; ...@@ -27,7 +27,6 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*; import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.util.List;
import java.util.stream.Stream; import java.util.stream.Stream;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
...@@ -39,6 +38,8 @@ import org.mockito.InjectMocks; ...@@ -39,6 +38,8 @@ import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Spy; import org.mockito.Spy;
import de.ozgcloud.admin.setting.SettingRepository;
class ReportingAggregationManagerSettingDtoServiceTest { class ReportingAggregationManagerSettingDtoServiceTest {
@Spy @Spy
...@@ -48,7 +49,7 @@ class ReportingAggregationManagerSettingDtoServiceTest { ...@@ -48,7 +49,7 @@ class ReportingAggregationManagerSettingDtoServiceTest {
@Mock @Mock
private AggregationMappingMapper mapper; private AggregationMappingMapper mapper;
@Mock @Mock
private AggregationMappingRepository repository; private SettingRepository repository;
@Nested @Nested
class TestMapToDto { class TestMapToDto {
...@@ -89,13 +90,13 @@ class ReportingAggregationManagerSettingDtoServiceTest { ...@@ -89,13 +90,13 @@ class ReportingAggregationManagerSettingDtoServiceTest {
void shouldCallRepository() { void shouldCallRepository() {
service.getDataTransferObject(); service.getDataTransferObject();
verify(repository).findAll(); verify(repository).findByType(AggregationMapping.TYPE_ALIAS, AggregationMapping.class);
} }
@Test @Test
void shouldCallMapToDto() { void shouldCallMapToDto() {
AggregationMapping mapping = AggregationMappingTestFactory.create(); AggregationMapping mapping = AggregationMappingTestFactory.create();
when(repository.findAll()).thenReturn(List.of(mapping)); when(repository.findByType(any(), any())).thenReturn(Stream.of(mapping));
service.getDataTransferObject(); service.getDataTransferObject();
......
...@@ -32,33 +32,43 @@ import org.springframework.data.mongodb.core.MongoOperations; ...@@ -32,33 +32,43 @@ import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.security.test.context.support.WithMockUser; import org.springframework.security.test.context.support.WithMockUser;
import de.ozgcloud.admin.common.user.UserRole; import de.ozgcloud.admin.common.user.UserRole;
import de.ozgcloud.admin.reporting.AggregationMappingTestFactory;
import de.ozgcloud.common.test.DataITCase; import de.ozgcloud.common.test.DataITCase;
@DataITCase @DataITCase
@WithMockUser(roles = UserRole.ADMIN_ADMIN) @WithMockUser(roles = UserRole.ADMIN_ADMIN)
class SettingRepositoryITCase { class SettingRepositoryITCase {
private static final String SETTING_NAME = "Name";
@Autowired @Autowired
private MongoOperations mongoOperations; private MongoOperations mongoOperations;
@Autowired @Autowired
private SettingRepository repository; private SettingRepository repository;
private Setting setting = SettingTestFactory.createBuilder()
.name(SETTING_NAME)
.build();
@Nested @Nested
class TestFindOneByName { class TestFindOneByName {
@Test @Test
void shouldGetSavedData() { void shouldGetSavedData() {
mongoOperations.dropCollection(Setting.COLLECTION_NAME); mongoOperations.dropCollection(Setting.COLLECTION_NAME);
mongoOperations.save(setting); mongoOperations.save(SettingTestFactory.create());
var settingFromDb = repository.findOneByName(SettingTestFactory.SETTING_NAME).get();
assertThat(settingFromDb).usingRecursiveComparison().ignoringFields("id").isEqualTo(SettingTestFactory.create());
}
}
@Nested
class TestFindByType {
@Test
void shouldReturnOnlySetting() {
mongoOperations.dropCollection(Setting.COLLECTION_NAME);
mongoOperations.save(SettingTestFactory.create());
mongoOperations.save(AggregationMappingTestFactory.create());
var settingFromDb = repository.findOneByName(SETTING_NAME).get(); var loaded = repository.findByType("Setting", Setting.class);
assertThat(settingFromDb).usingRecursiveComparison().isEqualTo(setting); assertThat(loaded).hasSize(1).first().isInstanceOf(Setting.class);
} }
} }
} }
...@@ -27,12 +27,14 @@ import de.ozgcloud.common.test.TestUtils; ...@@ -27,12 +27,14 @@ import de.ozgcloud.common.test.TestUtils;
public class SettingTestFactory { public class SettingTestFactory {
static final String SETTING_NAME = "Name";
public static Setting create() { public static Setting create() {
return createBuilder().build(); return createBuilder().build();
} }
public static Setting.SettingBuilder createBuilder() { public static Setting.SettingBuilder createBuilder() {
return Setting.builder(); return Setting.builder().name(SETTING_NAME);
} }
public static String buildSettingJson(Setting setting, String settingBodyString) { public static String buildSettingJson(Setting setting, String settingBodyString) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment