From 776cac5ba0333f3a5ae9a211ff7ea5b9f7ac5114 Mon Sep 17 00:00:00 2001
From: Jan Zickermann <jan.zickermann@dataport.de>
Date: Fri, 18 Oct 2024 16:36:43 +0200
Subject: [PATCH] OZG-6891 KOP-2733 Use messageIds from sendMessage

---
 .../ozgcloud/xta/client/XtaClientITCase.java  | 24 +++++----------
 .../xta/client/XtaClientRemoteITCase.java     | 30 +++++++++----------
 .../XtaServerSetupExtensionTestUtil.java      |  7 ++---
 3 files changed, 25 insertions(+), 36 deletions(-)

diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
index feda665..b28ff46 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientITCase.java
@@ -17,7 +17,6 @@ import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.xta.client.extension.StaticStringListAppender;
 import de.ozgcloud.xta.client.extension.XtaMessageExampleLoader;
 import de.ozgcloud.xta.client.extension.XtaTestServerSetupExtension;
@@ -57,8 +56,9 @@ class XtaClientITCase {
 	}
 
 	private void closeMessagesForAllReaders() {
-		Stream.of(READER_CLIENT_IDENTIFIER1, READER_CLIENT_IDENTIFIER2, READER_CLIENT_IDENTIFIER3)
-				.forEach(clientId -> closeAllMessages(setupClient, clientId));
+		closeAllMessages(setupClient, READER_CLIENT_IDENTIFIER1);
+		closeAllMessages(setupClient, READER_CLIENT_IDENTIFIER2);
+		closeAllMessages(setupClient, READER_CLIENT_IDENTIFIER3);
 	}
 
 
@@ -67,6 +67,7 @@ class XtaClientITCase {
 	class TestFetchMessages {
 
 		private List<XtaMessage> sendMessages;
+		private List<String> sendMessageIds;
 
 		@BeforeEach
 		void setup() {
@@ -78,7 +79,9 @@ class XtaClientITCase {
 					createMessage("versammlungsanzeige", AUTHOR_CLIENT_IDENTIFIER2, READER_CLIENT_IDENTIFIER3),
 					createMessage("versammlungsanzeige", AUTHOR_CLIENT_IDENTIFIER3, READER_CLIENT_IDENTIFIER3)
 			);
-			sendMessages.forEach(message -> sendTestMessage(setupClient, message));
+			sendMessageIds = sendMessages.stream()
+					.map(message -> sendTestMessage(setupClient, message))
+					.toList();
 		}
 
 		private XtaMessage createMessage(String messageLabel, XtaIdentifier author, XtaIdentifier reader) {
@@ -346,18 +349,7 @@ class XtaClientITCase {
 		}
 
 		private String messageIdBySendIndex(int sendIndex) {
-			var expectedMessageMetadata = withoutMessageIdAndSize(sendMessages.get(sendIndex).metaData());
-			var messageIds = processedMessages.stream()
-					.map(XtaMessage::metaData)
-					.filter(metaData -> withoutMessageIdAndSize(metaData).equals(expectedMessageMetadata))
-					.map(XtaMessageMetaData::messageId)
-					.toList();
-			if (messageIds.size() != 1) {
-				throw new TechnicalException(
-						"Expected exactly one message id for send index %d, but found %d!".formatted(sendIndex, messageIds.size())
-								+ "Ensure that all test messages have unique metadata!");
-			}
-			return messageIds.getFirst();
+			return sendMessageIds.get(sendIndex);
 		}
 
 		private List<XtaTransportReport> fetchMessages() {
diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java b/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java
index 6f0d11b..1ab424d 100644
--- a/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java
+++ b/src/test/java/de/ozgcloud/xta/client/XtaClientRemoteITCase.java
@@ -13,7 +13,6 @@ import java.util.stream.Stream;
 
 import org.junit.Ignore;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
@@ -53,27 +52,16 @@ class XtaClientRemoteITCase {
 
 	private static final XdomeaXtaMessageCreator XDOMEA_XTA_MESSAGE_CREATOR = XdomeaXtaMessageCreator.createInstance();
 
-	private static XtaClient testClient;
-	private static XtaClient silentTestClient;
-	private static XtaClient devClient;
-	private static XtaClient silentDevClient;
+	private XtaClient testClient;
+	private XtaClient silentTestClient;
+	private XtaClient devClient;
+	private XtaClient silentDevClient;
 
 	private List<XtaMessageMetaData> supportCheckedMetadataItems;
 	private List<XtaMessage> processedMessages;
 	private Consumer<XtaMessage> processMessageDummy;
 	private Predicate<XtaMessageMetaData> isSupportedDummy;
 
-	@BeforeAll
-	static void checkNoMessagePending() {
-		testClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getTestClient();
-		silentTestClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentTestClient();
-		devClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getDevClient();
-		silentDevClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentDevClient();
-
-		throwIfAnyMessagePending(silentDevClient, DEV_READER_CLIENT_IDENTIFIER);
-		throwIfAnyMessagePending(silentTestClient, TEST_READER_CLIENT_IDENTIFIER);
-	}
-
 	@BeforeEach
 	@SneakyThrows
 	void setup() {
@@ -82,6 +70,16 @@ class XtaClientRemoteITCase {
 		supportCheckedMetadataItems = new ArrayList<>();
 		isSupportedDummy = (metaData) -> true;
 		processedMessages = new ArrayList<>();
+
+		testClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getTestClient();
+		silentTestClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentTestClient();
+		devClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getDevClient();
+		silentDevClient = XTA_REMOTE_SERVER_SETUP_EXTENSION.getSilentDevClient();
+
+		// Fail if any message pending, to ensure that we do not clear existing messages in the DEV environment
+		failIfAnyMessagePending(silentDevClient, DEV_READER_CLIENT_IDENTIFIER);
+		failIfAnyMessagePending(silentTestClient, TEST_READER_CLIENT_IDENTIFIER);
+
 		StaticStringListAppender.clearLogLines();
 	}
 
diff --git a/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java b/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java
index 7582333..9ecd3fb 100644
--- a/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java
+++ b/src/test/java/de/ozgcloud/xta/client/extension/XtaServerSetupExtensionTestUtil.java
@@ -69,8 +69,6 @@ public class XtaServerSetupExtensionTestUtil {
 			.name("Kreisordnungsbehörde Dithmarschen")
 			.build();
 
-
-
 	public static XtaClientConfig.XtaClientConfigBuilder createClientConfigBuilder() {
 		return XtaClientConfig.builder()
 				.clientIdentifiers(emptyList())
@@ -110,11 +108,12 @@ public class XtaServerSetupExtensionTestUtil {
 	}
 
 	@SneakyThrows
-	public static void throwIfAnyMessagePending(XtaClient client, XtaIdentifier clientId) {
+	public static void failIfAnyMessagePending(XtaClient client, XtaIdentifier clientId) {
 		var wrappedService = getWrappedService(client);
 		var result = wrappedService.getStatusList(clientId, 1);
 		if (!result.messages().isEmpty()) {
-			fail("Expect no pending xta-messages for reader %s!".formatted(clientId.value()));
+			fail("Expect no pending xta-messages for reader %s! Ensure that the mailbox is empty before running this test.".formatted(
+					clientId.value()));
 		}
 	}
 
-- 
GitLab