Skip to content
Snippets Groups Projects
XtaClientEnaioExampleRemoteITCase.java 3.23 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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)")