diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachProperties.java index a7298837a5211b77bcb970bb82e2912b96466343..5a7e9f401ebea5b79c3db5c5e3ef8e069c247cfb 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachProperties.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachProperties.java @@ -46,6 +46,6 @@ public class PostfachProperties { /** * Settings that are linked to an Organisationseinheit. Configured by administration config server. */ - private Map<String, OrganisationsEinheitSettings> organisationsEinheitSettings = Map.of(); + private Map<String, Map<String, Object>> organisationsEinheitSettings = Map.of(); } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachSettingsService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachSettingsService.java index 84ffbf35e89c86ebd5f5f82939f1a6d9fe798256..0d3ff32f19a6e7e7a5383f1e77cb47c680ff0674 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachSettingsService.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachSettingsService.java @@ -1,5 +1,6 @@ package de.ozgcloud.alfa.postfach; +import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -15,6 +16,8 @@ import lombok.RequiredArgsConstructor; @Service class PostfachSettingsService { + static final String FIELD_SIGNATUR = "signatur"; + private PostfachConfigGroup postfachConfigGroup; private final PostfachMailRemoteService remoteService; @@ -74,6 +77,11 @@ class PostfachSettingsService { } Optional<OrganisationsEinheitSettings> getOrganisationsEinheitSettings(final String organisationId) { - return Optional.ofNullable(postfachProperties.getOrganisationsEinheitSettings().get(organisationId)); + return Optional.ofNullable(postfachProperties.getOrganisationsEinheitSettings().get(organisationId)).map(this::mapOrganisationsEinheitSettings); + } + + OrganisationsEinheitSettings mapOrganisationsEinheitSettings(Map<String, Object> organisationsEinheitSettings) { + var signatur = Optional.ofNullable(organisationsEinheitSettings.get(FIELD_SIGNATUR)).map(Object::toString).orElse(null); + return OrganisationsEinheitSettings.builder().signatur(signatur).build(); } } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachSettingsServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachSettingsServiceTest.java index a772c4fdc09c6887a636697f16135f8af95373a7..6a5a5e6c6ffb0555d0bc1cde94d73d5a532ef0c9 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachSettingsServiceTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/postfach/PostfachSettingsServiceTest.java @@ -3,6 +3,7 @@ package de.ozgcloud.alfa.postfach; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -361,11 +362,12 @@ class PostfachSettingsServiceTest { class TestGetOrganisationsEinheitSettings { private final OrganisationsEinheitSettings organisationsEinheitSettings = OrganisationsEinheitSettingsTestFactory.create(); + private final Map<String, Object> organisationsEinheitSettingsMap = Map.of(PostfachSettingsService.FIELD_SIGNATUR, OrganisationsEinheitSettingsTestFactory.TEST_SIGNATUR); @BeforeEach void setUp() { when(postfachProperties.getOrganisationsEinheitSettings()).thenReturn( - Map.of(OrganisationsEinheitTestFactory.ID, organisationsEinheitSettings)); + Map.of(OrganisationsEinheitTestFactory.ID, organisationsEinheitSettingsMap)); } @Test @@ -375,11 +377,18 @@ class PostfachSettingsServiceTest { verify(postfachProperties).getOrganisationsEinheitSettings(); } + @Test + void shouldMapToOrganisationsEinheitSettings() { + service.getOrganisationsEinheitSettings(OrganisationsEinheitTestFactory.ID); + + verify(service).mapOrganisationsEinheitSettings(organisationsEinheitSettingsMap); + } + @Test void shouldReturnSettings() { var settings = service.getOrganisationsEinheitSettings(OrganisationsEinheitTestFactory.ID); - assertThat(settings).hasValue(organisationsEinheitSettings); + assertThat(settings).isPresent().get().usingRecursiveComparison().isEqualTo(organisationsEinheitSettings); } @Test @@ -389,4 +398,25 @@ class PostfachSettingsServiceTest { assertThat(settings).isEmpty(); } } + + @Nested + class TestMapOrganisationsEinheitSettings { + + private final String signatur = LoremIpsum.getInstance().getWords(2); + private final Map<String, Object> organisationsEinheitSettings = Map.of(PostfachSettingsService.FIELD_SIGNATUR, signatur); + + @Test + void shouldMap() { + var settings = service.mapOrganisationsEinheitSettings(organisationsEinheitSettings); + + assertThat(settings.getSignatur()).isEqualTo(signatur); + } + + @Test + void shouldReturnSettingsWithNullSignatur() { + var settings = service.mapOrganisationsEinheitSettings(Collections.emptyMap()); + + assertThat(settings.getSignatur()).isNull(); + } + } }