package de.ozgcloud.xta.client; import static de.ozgcloud.xta.client.extension.XtaServerSetupExtensionTestUtil.TEST_AUTHOR_CLIENT_IDENTIFIER; import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import de.ozgcloud.xta.client.extension.XtaMessageExampleLoader; import de.ozgcloud.xta.client.extension.XtaRemoteServerSetupExtension; import de.ozgcloud.xta.client.model.XtaFile; import de.ozgcloud.xta.client.model.XtaIdentifier; import de.ozgcloud.xta.client.model.XtaMessage; import de.ozgcloud.xta.client.model.XtaMessageStatus; import de.ozgcloud.xta.client.xdomea.XdomeaXtaMessageCreator; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @Slf4j @EnabledIfEnvironmentVariable( named = "KOP_SH_KIEL_DEV_PATH", matches = ".+", disabledReason = "This test requires the path KOP_SH_KIEL_{DEV,TEST}_PATH and password KOP_SH_KIEL_{DEV,TEST}_PASSWORD of KOP_SH_KIEL_DEV.p12 and OZG-CLOUD_SH_KIEL_TEST.pfx. " + "Additionally, the endpoint of the DEV-xta-server at li33-0005.dp.dsecurecloud.de must be reachable." ) class XtaClientEnaioExampleRemoteITCase { @RegisterExtension private static final XtaRemoteServerSetupExtension XTA_REMOTE_SERVER_SETUP_EXTENSION = new XtaRemoteServerSetupExtension(); private static final XdomeaXtaMessageCreator XDOMEA_XTA_MESSAGE_CREATOR = XdomeaXtaMessageCreator.createInstance(); private XtaClient testClient; @BeforeEach @SneakyThrows void setup() { testClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getTestClient(); } @DisplayName("send messages") @Nested class TestSendMessage { @DisplayName("should have open status for enaio messages") @SneakyThrows @ParameterizedTest @ValueSource(strings = { "abgabe0401-enaio-01", "abgabe0401-enaio-02", "abgabe0401-enaio-03", "abgabe0401-enaio-04" }) void shouldReturn(String messageLabel) { XtaMessage xtaMessage = createXdomeaMessage(loadMessage(messageLabel).messageFile()); var result = testClient.sendMessage(xtaMessage); assertThat(result.status()).isEqualTo(XtaMessageStatus.OPEN); } } @DisplayName("should fetch messages") @Test @SneakyThrows void shouldFetchMessages() { var result = testClient.fetchMessages(message -> { log.info("message: {}", message); throw new RuntimeException("avoid closing message"); }); assertThat(result).isNotEmpty(); } @SneakyThrows private static XtaMessage createXdomeaMessage(XtaFile messageFile) { return XDOMEA_XTA_MESSAGE_CREATOR.createMessage(messageFile); } private static XtaMessage loadMessage(String messageLabel) { return XtaMessageExampleLoader.load(XtaMessageExampleLoader.MessageExampleConfig.builder() .messageLabel(messageLabel) .author(TEST_AUTHOR_CLIENT_IDENTIFIER) .reader(XtaIdentifier.builder() .category("Generischer Antragsempfänger") .value("gae:ozg-cloud-dms@optimal-systems.de") .name("DMS enaio (Optimal-Systems)") .build()) .build()); } }