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 22dc5bb4d7146b3c0f19655d0df078f481d71766..6559227d384fd2af43f561149553e38c91029b82 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 336143e3d52f052a29fb1054188599af964b3705..636883f9fabf3aa6d7aadb76a2714d5f44135e96 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 06a81e9346182e2258f65801afd0803e7d0939e6..7a3a00f50eba25c51d8b5766e8c94a08ae0e4227 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 2759035d7ff6c1a76a7bf31ed01f9cfe12fbfbf4..a00ab88ae8b7d18aa79a228c651d55ff472a8289 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 911e86ecb066594e6866d6993912d71907538a79..38e9f18206b4e10f3d6e1fb7709d93cd4f132069 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