From 1e54f93317cab2ed31ea1aecf27a571efaea1582 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Thu, 14 Nov 2024 12:17:55 +0100 Subject: [PATCH] OZG-7126 throw exception on postfachType null and no distinct configured postfachRemoteService; ajdust log warn -> error --- .../nachrichten/postfach/PostfachService.java | 9 +++++-- .../postfach/PostfachServiceTest.java | 26 ++++++++++++++----- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java index 6157c7f..b92fead 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java @@ -42,6 +42,7 @@ import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import de.ozgcloud.common.errorhandling.TechnicalException; import de.ozgcloud.nachrichten.antragraum.AntragraumService; import de.ozgcloud.nachrichten.attributes.ClientAttributeService; import de.ozgcloud.nachrichten.info.InfoManagerService; @@ -274,14 +275,18 @@ class PostfachService { } Optional<PostfachRemoteService> findPostfachRemoteService(String postfachType) { - return getPostfachRemoteServices() + var remoteServices = getPostfachRemoteServices().toList(); + if (Objects.isNull(postfachType) && remoteServices.size() != 1) { + throw new TechnicalException("PostfachType is null and no distinct PostfachService is configured."); + } + return remoteServices.stream() .filter(remoteService -> hasPostfachType(remoteService, postfachType)) .findFirst(); } private boolean hasPostfachType(PostfachRemoteService postfachRemoteService, String postfachType) { if (Objects.isNull(postfachType)) { - LOG.warn("PostfachType is null - use existing PostfachService with type %s.".formatted(postfachRemoteService.getPostfachType())); + LOG.error("PostfachType is null - use existing PostfachService with type %s.".formatted(postfachRemoteService.getPostfachType())); return true; } return StringUtils.equals(postfachRemoteService.getPostfachType(), postfachType); diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java index db5aec4..8dcd52f 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java @@ -52,6 +52,7 @@ import org.springframework.boot.logging.LogLevel; import org.springframework.context.ApplicationEventPublisher; import org.springframework.test.util.ReflectionTestUtils; +import de.ozgcloud.common.errorhandling.TechnicalException; import de.ozgcloud.nachrichten.antragraum.AntragraumService; import de.ozgcloud.nachrichten.attributes.ClientAttributeService; import de.ozgcloud.nachrichten.info.InfoManagerService; @@ -877,14 +878,27 @@ class PostfachServiceTest { assertThat(foundRemoteService).isEmpty(); } - @Test - void shouldReturnRemoteServiceOnPostfachTypeNull() { - when(remoteService.getPostfachType()).thenReturn("BAYERN_ID"); - doReturn(Stream.of(remoteService)).when(service).getPostfachRemoteServices(); + @DisplayName("on postfachType null") + @Nested + class TestOnPostfachTypeNull { - var foundRemoteService = service.findPostfachRemoteService(null); + @Test + void shouldReturnRemoteService() { + when(remoteService.getPostfachType()).thenReturn("BAYERN_ID"); + doReturn(Stream.of(remoteService)).when(service).getPostfachRemoteServices(); - assertThat(foundRemoteService).hasValue(remoteService); + var foundRemoteService = service.findPostfachRemoteService(null); + + assertThat(foundRemoteService).hasValue(remoteService); + } + + @Test + void shouldThrowExceptionMultipleConfiguredRemoteServices() { + doReturn(Stream.of(anotherRemoteService, remoteService)).when(service).getPostfachRemoteServices(); + + assertThatThrownBy(() -> service.findPostfachRemoteService(null)) + .isInstanceOf(TechnicalException.class); + } } } -- GitLab