diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java index 85b189a2d8e9369053bcacbe8c4681b136bed65a..2d30f00558cde6cf423a3760c2e05c17bd95331d 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapper.java @@ -87,7 +87,7 @@ public abstract class PostfachNachrichtMapper { .setSubject(MapUtils.getString(mailMap, PostfachNachricht.FIELD_SUBJECT)) .setMailBody(MapUtils.getString(mailMap, PostfachNachricht.FIELD_MAIL_BODY)) .setReplyOption(MapUtils.getString(mailMap, PostfachNachricht.FIELD_REPLY_OPTION)) - .addAllAttachment((Iterable<String>) mailMap.getOrDefault(PostfachNachricht.FIELD_ATTACHMENTS, Collections.emptyList())); + .addAllAttachment(getAttachments(mailMap)); Optional.ofNullable(getAsMap(mailMap, PostfachNachricht.POSTFACH_ADDRESS_FIELD)) .filter(MapUtils::isNotEmpty) @@ -97,6 +97,15 @@ public abstract class PostfachNachrichtMapper { return postfachMailBuilder.build(); } + private Iterable<String> getAttachments(Map<String, Object> map) { + var attachments = map.getOrDefault(PostfachNachricht.FIELD_ATTACHMENTS, Collections.emptyList()); + if (attachments instanceof String attachment) { + return Collections.singletonList(attachment); + } + return (Iterable<String>) attachments; + + } + GrpcPostfachAddress buildGrpcPostfachAddress(Map<String, Object> postfachAddressMap) { var postfachAddressBuilder = GrpcPostfachAddress.newBuilder() .setType(MapUtils.getIntValue(postfachAddressMap, PostfachAddress.TYPE_FIELD)) diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapperTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapperTest.java index 344a5073a639ccc488b9d38a62ea5fbc792a9f44..646aacaab83277bdbb9102da5afec10383a0dc35 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapperTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachNachrichtMapperTest.java @@ -29,6 +29,7 @@ import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.util.Map; +import java.util.UUID; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -115,6 +116,15 @@ class PostfachNachrichtMapperTest { var fieldValue = getAttributeFromGrpcObject(mapped, fieldName); assertThat((String) fieldValue).isEmpty(); } + + @Test + void shouldProceedWithSingleAttachment() { + var postfachNachrichtMap = PostfachNachrichtTestFactory.asMap(); + + postfachNachrichtMap.put(PostfachNachricht.FIELD_ATTACHMENTS, UUID.randomUUID().toString()); + + assertDoesNotThrow(() -> fromMap(postfachNachrichtMap)); + } } @DisplayName("with missing postfachAddress")