Skip to content
Snippets Groups Projects
Commit 6c0187f7 authored by Jan Zickermann's avatar Jan Zickermann
Browse files

WIP sh-stage: Find valid send parameters send with mapping

parent 4b0192e0
Branches
No related tags found
No related merge requests found
package de.ozgcloud.nachrichten.postfach.osiv2.transfer; package de.ozgcloud.nachrichten.postfach.osiv2.transfer;
import java.util.Collections;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
...@@ -9,30 +11,51 @@ import org.mapstruct.ReportingPolicy; ...@@ -9,30 +11,51 @@ import org.mapstruct.ReportingPolicy;
import de.ozgcloud.nachrichten.postfach.PostfachAddress; import de.ozgcloud.nachrichten.postfach.PostfachAddress;
import de.ozgcloud.nachrichten.postfach.PostfachAddressIdentifier; import de.ozgcloud.nachrichten.postfach.PostfachAddressIdentifier;
import de.ozgcloud.nachrichten.postfach.PostfachNachricht; import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.MessageExchangeFiles;
import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.OutSendMessageRequestV2; import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.OutSendMessageRequestV2;
import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1References;
import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1ReplyBehavior;
@Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR) @Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR)
public interface RequestMapper { public interface RequestMapper {
@Mapping(target = "sequencenumber", ignore = true) String ORIGIN_SENDER = "OZG-Cloud";
@Mapping(target = "sequencenumber", source = "vorgangId")
@Mapping(target = "body", source = "mailBody") @Mapping(target = "body", source = "mailBody")
@Mapping(target = "displayName", ignore = true) @Mapping(target = "displayName", source = "createdBy")
@Mapping(target = "originSender", ignore = true) @Mapping(target = "originSender", constant = ORIGIN_SENDER)
@Mapping(target = "replyAction", constant = "REPLYPOSSIBLE") @Mapping(target = "replyAction", source = "replyOption")
@Mapping(target = "eidasLevel", constant = "MEDIUM") @Mapping(target = "eidasLevel", constant = "LOW")
@Mapping(target = "isObligatory", expression = "java( false )") @Mapping(target = "isObligatory", expression = "java( false )")
@Mapping(target = "isHtml", expression = "java( true )") @Mapping(target = "isHtml", expression = "java( true )")
@Mapping(target = "files", ignore = true) @Mapping(target = "files", expression = "java( mapMessageExchangeFiles() )")
@Mapping(target = "references", ignore = true) @Mapping(target = "references", expression = "java( mapReferences() )")
OutSendMessageRequestV2 mapOutSendMessageRequestV2(PostfachNachricht nachricht); OutSendMessageRequestV2 mapOutSendMessageRequestV2(PostfachNachricht nachricht);
default List<MessageExchangeFiles> mapMessageExchangeFiles() {
return Collections.emptyList();
}
default List<V1References> mapReferences() {
return Collections.emptyList();
}
default V1ReplyBehavior mapReplyAction(PostfachNachricht.ReplyOption replyOption) {
return switch (replyOption) {
case FORBIDDEN -> V1ReplyBehavior.REPLYFORBIDDEN;
case POSSIBLE -> V1ReplyBehavior.REPLYPOSSIBLE;
case MANDATORY -> V1ReplyBehavior.REPLYMANDATORY;
};
}
default String mapMailboxId(PostfachNachricht nachricht) { default String mapMailboxId(PostfachNachricht nachricht) {
return Optional.ofNullable(nachricht.getPostfachAddress()) return Optional.ofNullable(nachricht.getPostfachAddress())
.map(PostfachAddress::getIdentifier) .map(PostfachAddress::getIdentifier)
.filter(PostfachAddressIdentifier::isStringBasedIdentifier) .filter(PostfachAddressIdentifier::isStringBasedIdentifier)
.map(Object::toString) .map(Object::toString)
.orElseThrow(() -> new IllegalArgumentException("Missing MailboxId! Expect MailboxId to be a string-based PostfachAddress of PostfachNachricht.")); .orElseThrow(() -> new IllegalArgumentException(
"Missing MailboxId! Expect MailboxId to be a string-based PostfachAddress of PostfachNachricht."));
} }
} }
...@@ -31,7 +31,7 @@ public class OsiPostfachRemoteServiceRemoteITCase { ...@@ -31,7 +31,7 @@ public class OsiPostfachRemoteServiceRemoteITCase {
private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.createBuilder() private final PostfachNachricht nachricht = PostfachNachrichtTestFactory.createBuilder()
.postfachAddress(PostfachAddressTestFactory.createBuilder() .postfachAddress(PostfachAddressTestFactory.createBuilder()
.identifier(DummyStringBasedIdentifier.builder() .identifier(DummyStringBasedIdentifier.builder()
.mailboxId("53ae88a0-6b06-44d0-8b13-e7b547fcaa6b") .mailboxId("sh/sh/60e319ae-4fe7-4f47-c7c8-08dca563280a")
.build()) .build())
.build()) .build())
.build(); .build();
......
...@@ -7,6 +7,8 @@ import de.ozgcloud.nachrichten.postfach.PostfachNachricht; ...@@ -7,6 +7,8 @@ import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
public class PostfachNachrichtTestFactory { public class PostfachNachrichtTestFactory {
public static final String MAIL_BODY = "mail body"; public static final String MAIL_BODY = "mail body";
public static final String MAIL_SUBJECT = "mail subject"; public static final String MAIL_SUBJECT = "mail subject";
public static final String VORGANG_ID = "test-vorgang-id";
public static final String USER_ID = "test-user-id";
public static PostfachNachricht create() { public static PostfachNachricht create() {
...@@ -17,8 +19,10 @@ public class PostfachNachrichtTestFactory { ...@@ -17,8 +19,10 @@ public class PostfachNachrichtTestFactory {
return PostfachNachricht.builder() return PostfachNachricht.builder()
.mailBody(MAIL_BODY) .mailBody(MAIL_BODY)
.subject(MAIL_SUBJECT) .subject(MAIL_SUBJECT)
.replyOption(PostfachNachricht.ReplyOption.FORBIDDEN)
.createdAt(ZonedDateTime.now()) .createdAt(ZonedDateTime.now())
.vorgangId("test-vorgang-id") .createdBy(USER_ID)
.vorgangId(VORGANG_ID)
.postfachAddress(PostfachAddressTestFactory.create()); .postfachAddress(PostfachAddressTestFactory.create());
} }
} }
...@@ -2,6 +2,7 @@ package de.ozgcloud.nachrichten.postfach.osiv2.transfer; ...@@ -2,6 +2,7 @@ package de.ozgcloud.nachrichten.postfach.osiv2.transfer;
import static de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachAddressTestFactory.*; import static de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachAddressTestFactory.*;
import static de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory.*; import static de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory.*;
import static de.ozgcloud.nachrichten.postfach.osiv2.transfer.RequestMapper.*;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
import java.util.stream.Stream; import java.util.stream.Stream;
...@@ -16,10 +17,12 @@ import org.mapstruct.factory.Mappers; ...@@ -16,10 +17,12 @@ import org.mapstruct.factory.Mappers;
import de.ozgcloud.nachrichten.postfach.PostfachAddress; import de.ozgcloud.nachrichten.postfach.PostfachAddress;
import de.ozgcloud.nachrichten.postfach.PostfachAddressIdentifier; import de.ozgcloud.nachrichten.postfach.PostfachAddressIdentifier;
import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachAddressTestFactory; import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachAddressTestFactory;
import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory; import de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachNachrichtTestFactory;
import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.OutSendMessageRequestV2; import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.OutSendMessageRequestV2;
import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1EidasLevel; import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1EidasLevel;
import de.ozgcloud.nachrichten.postfach.osiv2.gen.model.V1ReplyBehavior;
class RequestMapperTest { class RequestMapperTest {
...@@ -67,6 +70,16 @@ class RequestMapperTest { ...@@ -67,6 +70,16 @@ class RequestMapperTest {
@DisplayName("map OutSendMessageRequestV2") @DisplayName("map OutSendMessageRequestV2")
@Nested @Nested
class TestMapOutSendMessageRequestV2 { class TestMapOutSendMessageRequestV2 {
@DisplayName("should map sequence number")
@Test
void shouldMapSequenceNumber() {
var result = doMapping();
assertThat(result.getSequencenumber()).isEqualTo(VORGANG_ID);
}
@DisplayName("should map subject") @DisplayName("should map subject")
@Test @Test
void shouldMapSubject() { void shouldMapSubject() {
...@@ -83,12 +96,60 @@ class RequestMapperTest { ...@@ -83,12 +96,60 @@ class RequestMapperTest {
assertThat(result.getBody()).isEqualTo(MAIL_BODY); assertThat(result.getBody()).isEqualTo(MAIL_BODY);
} }
@DisplayName("should map display name")
@Test
void shouldMapDisplayName() {
var result = doMapping();
assertThat(result.getDisplayName()).isEqualTo(USER_ID);
}
@DisplayName("should map origin sender")
@Test
void shouldMapOriginSender() {
var result = doMapping();
assertThat(result.getOriginSender()).isEqualTo(ORIGIN_SENDER);
}
@DisplayName("should map forbidden reply action")
@Test
void shouldMapForbiddenReplyAction() {
var result = doMapping();
assertThat(result.getReplyAction()).isEqualTo(V1ReplyBehavior.REPLYFORBIDDEN);
}
@DisplayName("should map possible reply action")
@Test
void shouldMapPossibleReplyAction() {
var nachricht = PostfachNachrichtTestFactory.createBuilder()
.replyOption(PostfachNachricht.ReplyOption.POSSIBLE)
.build();
var result = mapper.mapOutSendMessageRequestV2(nachricht);
assertThat(result.getReplyAction()).isEqualTo(V1ReplyBehavior.REPLYPOSSIBLE);
}
@DisplayName("should map mandatory reply action")
@Test
void shouldMapMandatoryReplyAction() {
var nachricht = PostfachNachrichtTestFactory.createBuilder()
.replyOption(PostfachNachricht.ReplyOption.MANDATORY)
.build();
var result = mapper.mapOutSendMessageRequestV2(nachricht);
assertThat(result.getReplyAction()).isEqualTo(V1ReplyBehavior.REPLYMANDATORY);
}
@DisplayName("should set eidasLevel") @DisplayName("should set eidasLevel")
@Test @Test
void shouldSetEidasLevel() { void shouldSetEidasLevel() {
var result = doMapping(); var result = doMapping();
assertThat(result.getEidasLevel()).isEqualTo(V1EidasLevel.MEDIUM); assertThat(result.getEidasLevel()).isEqualTo(V1EidasLevel.LOW);
} }
@DisplayName("should set isObligatory") @DisplayName("should set isObligatory")
...@@ -99,6 +160,30 @@ class RequestMapperTest { ...@@ -99,6 +160,30 @@ class RequestMapperTest {
assertThat(result.getIsObligatory()).isFalse(); assertThat(result.getIsObligatory()).isFalse();
} }
@DisplayName("should set isHtml")
@Test
void shouldSetIsHtml() {
var result = doMapping();
assertThat(result.getIsHtml()).isTrue();
}
@DisplayName("should map files")
@Test
void shouldMapFiles() {
var result = doMapping();
assertThat(result.getFiles()).isEmpty();
}
@DisplayName("should map references")
@Test
void shouldMapReferences() {
var result = doMapping();
assertThat(result.getFiles()).isEmpty();
}
private OutSendMessageRequestV2 doMapping() { private OutSendMessageRequestV2 doMapping() {
return mapper.mapOutSendMessageRequestV2(PostfachNachrichtTestFactory.create()); return mapper.mapOutSendMessageRequestV2(PostfachNachrichtTestFactory.create());
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment