diff --git a/spec/postfach-api-facade.yaml b/spec/postfach-api-facade.yaml index a8aa628e214ede3018cf777e6ab435b828411306..ac32d8ce022f44d50c0986b906df6e32f0eeb188 100644 --- a/spec/postfach-api-facade.yaml +++ b/spec/postfach-api-facade.yaml @@ -844,6 +844,7 @@ paths: detail: Der Dienst ist zurzeit nicht verfügbar. /MessageExchange/v1/Send/{mailboxId}: post: + operationId: SendMessage tags: - MessageExchange summary: Sendet eine Nachricht an ein externes oder internes Postfach. diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java index 127d16d1eb77c9994d2ec99607706db67cdc7cfb..d199e5109946eaf485a636c7adb6bce20babed26 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/osiv2/transfer/RequestMapper.java @@ -18,10 +18,10 @@ public interface RequestMapper { @Mapping(target = "body", source = "mailBody") @Mapping(target = "displayName", ignore = true) @Mapping(target = "originSender", ignore = true) - @Mapping(target = "replyAction", ignore = true) + @Mapping(target = "replyAction", constant = "REPLYPOSSIBLE") @Mapping(target = "eidasLevel", constant = "MEDIUM") @Mapping(target = "isObligatory", expression = "java( false )") - @Mapping(target = "isHtml", ignore = true) + @Mapping(target = "isHtml", expression = "java( true )") @Mapping(target = "files", ignore = true) @Mapping(target = "references", ignore = true) OutSendMessageRequestV2 mapOutSendMessageRequestV2(PostfachNachricht nachricht); diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java index b980765e60ab7dd886636fd865ca6d321e469f4a..4032fec013c3c45adca8bdcca5291b2c483f917c 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/OsiPostfachRemoteServiceITCase.java @@ -1,10 +1,14 @@ package de.ozgcloud.nachrichten.postfach.osiv2; import static de.ozgcloud.nachrichten.postfach.osiv2.factory.JwtFactory.*; -import static de.ozgcloud.nachrichten.postfach.osiv2.factory.PostfachAddressTestFactory.*; import static org.assertj.core.api.Assertions.*; +import static org.mockserver.mock.OpenAPIExpectation.*; import static org.mockserver.model.HttpRequest.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Map; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -48,12 +52,12 @@ public class OsiPostfachRemoteServiceITCase { registry.add("ozgcloud.osiv2-postfach.api.resource", () -> RESOURCE_URN); } - private MockServerClient mockClient; + private MockServerClient postfachFacadeMockClient; @BeforeEach @SneakyThrows public void setup() { - mockClient = OSI_MOCK_SERVER_EXTENSION.getPostfachFacadeMockClient(); + postfachFacadeMockClient = OSI_MOCK_SERVER_EXTENSION.getPostfachFacadeMockClient(); } @DisplayName("send message") @@ -62,12 +66,19 @@ public class OsiPostfachRemoteServiceITCase { @DisplayName("should send dummy request with jwt") @Test + @SneakyThrows void shouldSendDummyRequestWithJwt() { + postfachFacadeMockClient.upsert( + openAPIExpectation() + .withSpecUrlOrPayload(Files.readString(Path.of("spec", "postfach-api-facade.yaml"))) + .withOperationsAndResponses(Map.of( + "SendMessage", "200" + )) + ); + osiPostfachRemoteService.sendMessage(postfachNachricht); - var requests = mockClient.retrieveRecordedRequests(request() - .withPathParameter("mailboxId", MAILBOX_ID) - .withPath("/MessageExchange/v1/Send/{mailboxId}")); + var requests = postfachFacadeMockClient.retrieveRecordedRequests(request()); assertThat(requests).hasSize(1); var jwt = Jwt.parseAuthHeaderValue( requests[0].getHeader("Authorization").getFirst() diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/OsiMockServerExtension.java b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/OsiMockServerExtension.java index 7de1108b7365907a45a7f8372c0d8960c192af2b..b5b8e935b414d08dae04e02ebeb912cb95feab16 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/OsiMockServerExtension.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/osiv2/extension/OsiMockServerExtension.java @@ -2,16 +2,12 @@ package de.ozgcloud.nachrichten.postfach.osiv2.extension; import static de.ozgcloud.nachrichten.postfach.osiv2.factory.JwtFactory.*; import static org.mockserver.matchers.Times.*; -import static org.mockserver.mock.OpenAPIExpectation.*; import static org.mockserver.model.Header.*; import static org.mockserver.model.HttpRequest.*; import static org.mockserver.model.HttpResponse.*; import static org.mockserver.model.Parameter.*; import static org.mockserver.model.ParameterBody.*; -import java.nio.file.Files; -import java.nio.file.Path; - import org.junit.jupiter.api.extension.AfterAllCallback; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeAllCallback; @@ -40,15 +36,19 @@ public class OsiMockServerExtension implements BeforeAllCallback, AfterAllCallba .withTag("mockserver-5.15.0"); private final MockServerContainer serviceKontoMockContainer = new MockServerContainer(MOCK_SERVER_IMAGE) - .withLogConsumer(outputFrame -> { - var line = outputFrame.getUtf8String().stripTrailing(); - if (outputFrame.getType() == OutputFrame.OutputType.STDERR) { - LOG.error(line); - } else { - LOG.info(line); - } - }); - private final MockServerContainer postfachFacadeMockContainer = new MockServerContainer(MOCK_SERVER_IMAGE); + .withLogConsumer(this::logContainerOutput); + private final MockServerContainer postfachFacadeMockContainer = new MockServerContainer(MOCK_SERVER_IMAGE) + .withLogConsumer(this::logContainerOutput); + + + private void logContainerOutput(OutputFrame outputFrame) { + var line = outputFrame.getUtf8String().stripTrailing(); + if (outputFrame.getType() == OutputFrame.OutputType.STDERR) { + System.err.println(line); + } else { + System.out.println(line); + } + } @Override public void beforeAll(ExtensionContext context) { @@ -104,9 +104,6 @@ public class OsiMockServerExtension implements BeforeAllCallback, AfterAllCallba @SneakyThrows @Override public void beforeEach(ExtensionContext context) { - postfachFacadeMockClient.upsert( - openAPIExpectation(Files.readString(Path.of("spec", "postfach-api-facade.yaml"))) - ); serviceKontoMockClient .when( request()