From 90e665051742d23b8d07aeac2696a1e0a87cab98 Mon Sep 17 00:00:00 2001 From: Radek Davidek Date: Mon, 2 Mar 2026 16:01:03 +0100 Subject: [PATCH] test fixes for mq --- .../connectors/messaging/IbmMqConnector.java | 2 + .../test/harness/support/util/Template.java | 2 +- tests/.checkstyle | 7 +++ tests/pom.xml | 7 ++- .../test/system/messaging/SendMQMessage.java | 50 ++++++++++++++----- tests/src/test/resources/envs/mq | 12 ++--- .../test/resources/messaging/mf-request.xml | 4 ++ 7 files changed, 62 insertions(+), 22 deletions(-) create mode 100644 tests/.checkstyle create mode 100644 tests/src/test/resources/messaging/mf-request.xml diff --git a/test-harness/src/main/java/cz/moneta/test/harness/connectors/messaging/IbmMqConnector.java b/test-harness/src/main/java/cz/moneta/test/harness/connectors/messaging/IbmMqConnector.java index 6bc3e0b..4045b70 100644 --- a/test-harness/src/main/java/cz/moneta/test/harness/connectors/messaging/IbmMqConnector.java +++ b/test-harness/src/main/java/cz/moneta/test/harness/connectors/messaging/IbmMqConnector.java @@ -57,8 +57,10 @@ public class IbmMqConnector implements Connector { try { if (keystorePath != null && !keystorePath.isBlank()) { System.setProperty("javax.net.ssl.keyStore", keystorePath); + System.setProperty("javax.net.ssl.trustStore", keystorePath); if (keystorePassword != null) { System.setProperty("javax.net.ssl.keyStorePassword", keystorePassword); + System.setProperty("javax.net.ssl.trustStorePassword", keystorePassword); } } diff --git a/test-harness/src/main/java/cz/moneta/test/harness/support/util/Template.java b/test-harness/src/main/java/cz/moneta/test/harness/support/util/Template.java index 755f9bd..371ff7e 100644 --- a/test-harness/src/main/java/cz/moneta/test/harness/support/util/Template.java +++ b/test-harness/src/main/java/cz/moneta/test/harness/support/util/Template.java @@ -14,7 +14,7 @@ public class Template { } public Template(String templateString) { - this.template = new ST(templateString); + this.template = new ST(templateString, '$', '$'); } public Template set(String variable, String value) { diff --git a/tests/.checkstyle b/tests/.checkstyle new file mode 100644 index 0000000..5783bc0 --- /dev/null +++ b/tests/.checkstyle @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/pom.xml b/tests/pom.xml index fc8fa99..186eafd 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -24,7 +24,12 @@ com.ibm.mq.allclient ${ibm.mq.version} - + + + org.antlr + ST4 + 4.3.4 + javax.jms javax.jms-api diff --git a/tests/src/test/java/cz/moneta/test/system/messaging/SendMQMessage.java b/tests/src/test/java/cz/moneta/test/system/messaging/SendMQMessage.java index c2e6263..cc84f32 100644 --- a/tests/src/test/java/cz/moneta/test/system/messaging/SendMQMessage.java +++ b/tests/src/test/java/cz/moneta/test/system/messaging/SendMQMessage.java @@ -1,24 +1,48 @@ package cz.moneta.test.system.messaging; +import java.util.concurrent.TimeUnit; + import cz.moneta.test.dsl.Harness; import cz.moneta.test.harness.annotations.TestCase; import cz.moneta.test.harness.annotations.TestScenario; +import cz.moneta.test.harness.support.util.Template; @TestScenario(name = "Send MQ message") public class SendMQMessage { - - @TestCase(name = "Send MQ message") - public void sendMessage(Harness harness) { - String message = "Hello, this is a test message!"; - String destination = "mainframe-utf8-queue"; - - System.setProperty("javax.net.ssl.trustStore", "/home/kamma/tmp/mq-docker/ibmmq-client.p12"); - System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); - - //System.setProperty("jdk.tls.client.protocols", "TLSv1.2"); - //System.setProperty("javax.net.ssl.trustStoreType", "PKCS12"); - harness.withMessaging().to(destination).asJson().withPayload(message).send(); - } + @TestCase(name = "Send JSON message") + public void sendJsonMessage(Harness harness) { + + harness.withMessaging().to("payment-notifications").asJson() + .withPayload("{\"paymentId\": \"PAY-456\", \"result\": \"OK\"}").send(); + + harness.withMessaging().from("payment-notifications").asJson() + .receiveWhere(msg -> msg.extract("paymentId").equals("PAY-456")).withTimeout(5, TimeUnit.SECONDS) + .andAssertFieldValue("result", "OK"); + } + + @TestCase(name = "Send XML message") + public void sendXmlMessage(Harness harness) { + + harness.withMessaging().to("mainframe-requests").asXml() + .withPayload("1234550000").send(); + + harness.withMessaging().to("mainframe-requests").asXml() + .withPayloadFromTemplate(Template.fromFilepath("messaging/mf-request.xml").set("accountId", "12345")) + .send(); + + harness.withMessaging().from("mainframe-requests").asXml() + .receiveWhere(msg -> msg.extract("/request/accountId").equals("12345")) + .withTimeout(5, TimeUnit.SECONDS).andAssertFieldValue("/request/balance", "50000"); + } + + @TestCase(name = "Send UTF8 message") + public void sendUtf8Message(Harness harness) { + + harness.withMessaging().to("mainframe-utf8-queue").asUtf8().withPayload("DATA|12345|ÚČET|CZK").send(); + + harness.withMessaging().from("mainframe-utf8-queue").asUtf8() + .receiveWhere(msg -> msg.getBody().contains("12345")).withTimeout(5, TimeUnit.SECONDS); + } } diff --git a/tests/src/test/resources/envs/mq b/tests/src/test/resources/envs/mq index c749710..d25b30e 100644 --- a/tests/src/test/resources/envs/mq +++ b/tests/src/test/resources/envs/mq @@ -12,30 +12,28 @@ messaging.kafka.value-serializer=avro # Messaging - IBM MQ messaging.ibmmq.host=localhost messaging.ibmmq.port=1414 -messaging.ibmmq.channel=CLIENT.CHANNEL +messaging.ibmmq.channel=DEV.APP.SVRCONN messaging.ibmmq.queue-manager=QM1 messaging.ibmmq.ssl-cipher-suite=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 -messaging.ibmmq.keystore.path=/home/kamma/tmp/mq-docker/ibmmq-client.p12 +messaging.ibmmq.keystore.path=/home/kamma/aa/mq-docker/truststore.jks messaging.ibmmq.keystore.password=changeit messaging.ibmmq.username=app messaging.ibmmq.password=app -messaging.ibmmq.keystore.type=PKCS12 -messaging.ibmmq.tls.protocols=TLSv1.2 # Messaging destinations messaging.destination.order-events.type=kafka messaging.destination.order-events.topic=order-events-tst1 messaging.destination.payment-notifications.type=ibmmq -messaging.destination.payment-notifications.queue=PAYMENT.NOTIFICATIONS +messaging.destination.payment-notifications.queue=DEV.QUEUE.1 messaging.destination.payment-notifications.format=json messaging.destination.mainframe-requests.type=ibmmq -messaging.destination.mainframe-requests.queue=MF.REQUESTS +messaging.destination.mainframe-requests.queue=XML.QUEUE.1 messaging.destination.mainframe-requests.format=xml messaging.destination.mainframe-ebcdic-queue.type=ibmmq messaging.destination.mainframe-ebcdic-queue.queue=MF.EBCDIC.QUEUE messaging.destination.mainframe-ebcdic-queue.format=ebcdic_870 messaging.destination.mainframe-utf8-queue.type=ibmmq -messaging.destination.mainframe-utf8-queue.queue=DEV.QUEUE.1 +messaging.destination.mainframe-utf8-queue.queue=UTF8.QUEUE.1 messaging.destination.mainframe-utf8-queue.format=utf8_1208 # Messaging vault paths diff --git a/tests/src/test/resources/messaging/mf-request.xml b/tests/src/test/resources/messaging/mf-request.xml new file mode 100644 index 0000000..680dd73 --- /dev/null +++ b/tests/src/test/resources/messaging/mf-request.xml @@ -0,0 +1,4 @@ + + $accountId$ + 60000 + \ No newline at end of file