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 c521e7dbdb02f729df1d310d89060fbcbefc5c0f..6ef2b4bf659ff1d7dfb079269f68cd9b7919b12b 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 @@ -239,7 +239,7 @@ public abstract class PostfachNachrichtMapper { } private Map<String, Object> buildPostfachAddressIdentifierMap(PostfachAddress postfachAddress) { - var identifier = (StringBasedIdentifier) postfachAddress.getIdentifier(); - return Map.of(PostfachAddress.FIELD_POSTFACH_ID, identifier.getPostfachId()); + var identifier = postfachAddress.getIdentifier(); + return Map.of(PostfachAddress.FIELD_POSTFACH_ID, identifier.isStringBasedIdentifier() ? identifier.toString() : ""); } } \ No newline at end of file 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 9e6c5c70bdcf244e71016e7963c42e96699b8e6f..469309f6979305ca463a4b5d0744e5bba8f6cb49 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 @@ -23,6 +23,7 @@ */ package de.ozgcloud.nachrichten.postfach; +import static de.ozgcloud.nachrichten.postfach.StringBasedIdentifierTestFactory.*; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; @@ -338,6 +339,40 @@ class PostfachNachrichtMapperTest { assertDoesNotThrow(() -> mapper.mapToMap(postfachMail)); } + @DisplayName("should map non string based identifier to empty") + @Test + + void shouldMapNonStringBasedIdentifierToEmpty() { + var postfachMail = PostfachNachrichtTestFactory.createBuilder() + .postfachAddress(PostfachAddressTestFactory.createBuilder() + .identifier(new PostfachAddressIdentifier() { + }) + .build() + ).build(); + + var postfachId = mapPostfachId(postfachMail); + + assertThat(postfachId).isEmpty(); + } + + @DisplayName("should map string based identifier") + @Test + void shouldMapStringBasedIdentifier() { + var postfachMail = PostfachNachrichtTestFactory.create(); + + var postfachId = mapPostfachId(postfachMail); + + assertThat(postfachId).isEqualTo(STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE); + } + + @SuppressWarnings("unchecked") + private String mapPostfachId(PostfachNachricht nachricht) { + var result = mapper.mapToMap(nachricht); + var postfachAddress = (Map<String, Object>) result.get(PostfachNachricht.POSTFACH_ADDRESS_FIELD); + var postfachIdentifier = (Map<String, Object>) postfachAddress.get(PostfachAddress.IDENTIFIER_FIELD); + return (String) postfachIdentifier.get(PostfachAddress.FIELD_POSTFACH_ID); + } + @Test void shouldProceedWithEmptyPostfachAddress() { var postfachMail = PostfachNachrichtTestFactory.createBuilder().postfachAddress(null).build();