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
Branches
Tags
1 merge request!3Ozg 6988 add reporting
......@@ -23,9 +23,16 @@
*/
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;
@Service
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DtoService {
String[] value();
......
......@@ -42,13 +42,15 @@ import lombok.ToString;
import lombok.extern.jackson.Jacksonized;
@Document("settings")
@TypeAlias("AggregationMapping")
@TypeAlias(AggregationMapping.TYPE_ALIAS)
@Jacksonized
@Builder
@Getter
@ToString
public class AggregationMapping {
public static final String TYPE_ALIAS = "AggregationMapping";
@Id
@JsonIgnore
private String id;
......
......@@ -28,18 +28,20 @@ import java.util.stream.Stream;
import de.ozgcloud.admin.common.DtoService;
import de.ozgcloud.admin.common.SettingDtoService;
import de.ozgcloud.admin.setting.SettingConstants;
import de.ozgcloud.admin.setting.SettingRepository;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@DtoService(SettingConstants.AGGREGATION_MANAGER)
class ReportingAggregationManagerSettingDtoService implements SettingDtoService {
private final AggregationMappingRepository repository;
private final AggregationMappingMapper mapper;
private final SettingRepository repository;
@Override
public ReportingAggregationManagerSettingDto getDataTransferObject() {
return mapToDto(repository.findAll().stream());
return mapToDto(repository.findByType("AggregationMapping", AggregationMapping.class));
}
ReportingAggregationManagerSettingDto mapToDto(Stream<AggregationMapping> settings) {
......
......@@ -23,15 +23,25 @@
*/
package de.ozgcloud.admin.setting;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
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.security.access.annotation.Secured;
@Secured("ROLE_ADMIN_ADMIN")
@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);
@Query("{'_class': ?0}")
<T> Stream<T> findByType(String typeName, Class<T> clazz);
}
......@@ -28,7 +28,7 @@ import java.util.UUID;
import de.ozgcloud.admin.reporting.AggregationMapping.FieldMapping;
import de.ozgcloud.admin.reporting.AggregationMapping.FormIdentifier;
class AggregationMappingTestFactory {
public class AggregationMappingTestFactory {
public static final String ID = UUID.randomUUID().toString();
public static final String FORM_ENGINE_NAME = "A12";
......
......@@ -27,7 +27,6 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.List;
import java.util.stream.Stream;
import org.junit.jupiter.api.BeforeEach;
......@@ -39,6 +38,8 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import de.ozgcloud.admin.setting.SettingRepository;
class ReportingAggregationManagerSettingDtoServiceTest {
@Spy
......@@ -48,7 +49,7 @@ class ReportingAggregationManagerSettingDtoServiceTest {
@Mock
private AggregationMappingMapper mapper;
@Mock
private AggregationMappingRepository repository;
private SettingRepository repository;
@Nested
class TestMapToDto {
......@@ -89,13 +90,13 @@ class ReportingAggregationManagerSettingDtoServiceTest {
void shouldCallRepository() {
service.getDataTransferObject();
verify(repository).findAll();
verify(repository).findByType(AggregationMapping.TYPE_ALIAS, AggregationMapping.class);
}
@Test
void shouldCallMapToDto() {
AggregationMapping mapping = AggregationMappingTestFactory.create();
when(repository.findAll()).thenReturn(List.of(mapping));
when(repository.findByType(any(), any())).thenReturn(Stream.of(mapping));
service.getDataTransferObject();
......
......@@ -32,33 +32,43 @@ import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.security.test.context.support.WithMockUser;
import de.ozgcloud.admin.common.user.UserRole;
import de.ozgcloud.admin.reporting.AggregationMappingTestFactory;
import de.ozgcloud.common.test.DataITCase;
@DataITCase
@WithMockUser(roles = UserRole.ADMIN_ADMIN)
class SettingRepositoryITCase {
private static final String SETTING_NAME = "Name";
@Autowired
private MongoOperations mongoOperations;
@Autowired
private SettingRepository repository;
private Setting setting = SettingTestFactory.createBuilder()
.name(SETTING_NAME)
.build();
@Nested
class TestFindOneByName {
@Test
void shouldGetSavedData() {
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;
public class SettingTestFactory {
static final String SETTING_NAME = "Name";
public static Setting create() {
return createBuilder().build();
}
public static Setting.SettingBuilder createBuilder() {
return Setting.builder();
return Setting.builder().name(SETTING_NAME);
}
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