From e64a3ec6c7c5c6211ddfe4800b0e73a3c59248fc Mon Sep 17 00:00:00 2001 From: Joerg Bolay <joerg.bolay@dataport.de> Date: Thu, 9 Jan 2025 10:58:19 +0100 Subject: [PATCH] OZG-4095 implementiert deleteMessage --- .../osiv2/OsiPostfachRemoteService.java | 13 +++++++++--- .../transfer/PostfachApiFacadeService.java | 11 +++++++++- .../OsiPostfachRemoteServiceRemoteITCase.java | 17 +++++++++++++--- .../osiv2/OsiPostfachRemoteServiceTest.java | 17 +++++++++++++++- .../PostfachApiFacadeServiceTest.java | 20 +++++++++++++++++++ 5 files changed, 70 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java index 22dc5bb..6559227 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteService.java @@ -29,13 +29,20 @@ public record OsiPostfachRemoteService( @Override public Stream<PostfachNachricht> getAllMessages() { - // TODO handle exceptions? - return postfachApiFacadeService.receiveMessages(); + try { + return postfachApiFacadeService.receiveMessages(); + }catch (RuntimeException e) { + throw new OsiPostfachException("Failed to get messages", e); + } } @Override public void deleteMessage(String messageId) { - // TODO + try { + postfachApiFacadeService.deleteMessage(messageId); + } catch (RuntimeException e) { + throw new OsiPostfachException("Failed to delete messages", e); + } } @Override diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java index 336143e..636883f 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeService.java @@ -1,5 +1,7 @@ package de.ozgcloud.nachrichten.postfach.osiv2.transfer; +import java.util.UUID; +import java.util.stream.Collectors; import java.util.stream.Stream; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -7,8 +9,10 @@ import org.springframework.stereotype.Service; import de.ozgcloud.nachrichten.postfach.PostfachNachricht; import de.ozgcloud.nachrichten.postfach.osiv2.gen.api.MessageExchangeApi; +import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeDeleteMessageResponse; import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeReceiveMessage; import lombok.extern.log4j.Log4j2; +import reactor.core.publisher.Mono; @Log4j2 @Service @@ -27,7 +31,6 @@ public record PostfachApiFacadeService( public Stream<PostfachNachricht> receiveMessages() { var response = messageExchangeApi.receiveMessages(100, 0).block(); - return response.getMessages().stream().map(this::fetchMessageByGuid); } @@ -36,4 +39,10 @@ public record PostfachApiFacadeService( return responseMapper.toPostfachNachricht(messageReply); } + public void deleteMessage(final String messageId) { + var deleteMessage = messageExchangeApi.messageExchangeV1DeleteMessageIdDelete( + UUID.fromString(messageId) + ).block(); + + } } diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java index 06a81e9..7a3a00f 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceRemoteITCase.java @@ -83,11 +83,22 @@ public class OsiPostfachRemoteServiceRemoteITCase { class TestReceiveAllMessages{ @Test - void renameMe(){ + void shouldReceiveAllMessage(){ Stream<PostfachNachricht> allMessages = osiPostfachRemoteService.getAllMessages(); + var messages = allMessages.toList(); + assertThat(messages.size() > 0); + } + } - List<PostfachNachricht> list = allMessages.toList(); - assertThat(allMessages.count() > 0); + @Disabled + @DisplayName("delete message") + @Nested + class TestDeleteMessageById{ + + @Test + void shouldDeleteMessage(){ + assertThatCode(() -> osiPostfachRemoteService.deleteMessage("5dd65c1e-bd41-4c3d-bf98-be769ca341dc")) + .doesNotThrowAnyException(); } } } diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java index 2759035..a00ab88 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceTest.java @@ -3,6 +3,7 @@ package de.ozgcloud.nachrichten.postfach.osiv2; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.util.UUID; import java.util.stream.Stream; import org.junit.jupiter.api.DisplayName; @@ -72,7 +73,21 @@ class OsiPostfachRemoteServiceTest { @DisplayName("delete message") @Nested class TestDeleteMessage { - // TODO + + @DisplayName("should call deleteMessage") + @Test + void shouldCallDeleteMessage() { + postfachApiFacadeService.deleteMessage(UUID.randomUUID().toString()); + + verify(postfachApiFacadeService).deleteMessage(any()); + } + @DisplayName("should throw osi postfach exception on runtime exception") + @Test + void shouldThrowOsiPostfachExceptionOnRuntimeException() { + doThrow(new RuntimeException()).when(postfachApiFacadeService).deleteMessage(UUID.randomUUID().toString()); + + assertThatThrownBy(() -> osiPostfachRemoteService.deleteMessage(anyString())).isInstanceOf(OsiPostfachException.class); + } } @DisplayName("get postfach type") diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java index 911e86e..38e9f18 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/PostfachApiFacadeServiceTest.java @@ -4,6 +4,8 @@ import static de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachAddressTest import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.util.UUID; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -14,6 +16,7 @@ import org.mockito.Mock; import de.ozgcloud.nachrichten.postfach.PostfachNachricht; import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory; import de.ozgcloud.nachrichten.postfach.osiv2.gen.api.MessageExchangeApi; +import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeDeleteMessageResponse; import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeReceiveMessage; import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeReceiveMessagesResponse; import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeSendMessageResponse; @@ -128,4 +131,21 @@ class PostfachApiFacadeServiceTest { } } + @DisplayName("Delete Message") + @Nested + class TestDeleteMessage{ + @Mock + MessageExchangeDeleteMessageResponse replyMessage; + + @Test + void shouldCallDeleteMessage(){ + var replyMono = Mono.just(replyMessage); + when(messageExchangeApi.messageExchangeV1DeleteMessageIdDelete(any())).thenReturn(replyMono); + + postfachApiFacadeService.deleteMessage(UUID.randomUUID().toString()); + + verify(messageExchangeApi).messageExchangeV1DeleteMessageIdDelete(any()); + } + } + } \ No newline at end of file -- GitLab