diff --git a/test-harness/src/main/java/cz/moneta/test/harness/support/messaging/ImqRequest.java b/test-harness/src/main/java/cz/moneta/test/harness/support/messaging/ImqRequest.java index 8dcef81..7b1b301 100644 --- a/test-harness/src/main/java/cz/moneta/test/harness/support/messaging/ImqRequest.java +++ b/test-harness/src/main/java/cz/moneta/test/harness/support/messaging/ImqRequest.java @@ -83,22 +83,22 @@ public final class ImqRequest { /** * Set message format to JSON (default). */ - PayloadPhase asJson(); + QueuePhase asJson(); /** * Set message format to XML. */ - PayloadPhase asXml(); + QueuePhase asXml(); /** * Set message format to EBCDIC (IBM-870). */ - PayloadPhase asEbcdic(); + QueuePhase asEbcdic(); /** * Set message format to UTF-8 (CCSID 1208). */ - PayloadPhase asUtf8(); + QueuePhase asUtf8(); /** * Set message payload as JSON string. @@ -159,6 +159,26 @@ public final class ImqRequest { * Browse messages from queue with selector (non-destructive). */ List browse(String selector, int maxMessages); + + /** + * Set message format to JSON (default) when receiving. + */ + QueuePhase asJson(); + + /** + * Set message format to XML when receiving. + */ + QueuePhase asXml(); + + /** + * Set message format to EBCDIC (IBM-870) when receiving. + */ + QueuePhase asEbcdic(); + + /** + * Set message format to UTF-8 (CCSID 1208) when receiving. + */ + QueuePhase asUtf8(); } /** @@ -212,25 +232,25 @@ public final class ImqRequest { } @Override - public PayloadPhase asJson() { + public QueuePhase asJson() { this.format = MqMessageFormat.JSON; return this; } @Override - public PayloadPhase asXml() { + public QueuePhase asXml() { this.format = MqMessageFormat.XML; return this; } @Override - public PayloadPhase asEbcdic() { + public QueuePhase asEbcdic() { this.format = MqMessageFormat.EBCDIC_870; return this; } @Override - public PayloadPhase asUtf8() { + public QueuePhase asUtf8() { this.format = MqMessageFormat.UTF8_1208; return this; } diff --git a/tests/src/test/java/cz/moneta/test/system/messaging/ImqFirstVisionTest.java b/tests/src/test/java/cz/moneta/test/system/messaging/ImqFirstVisionTest.java index 6ed8835..36ac641 100644 --- a/tests/src/test/java/cz/moneta/test/system/messaging/ImqFirstVisionTest.java +++ b/tests/src/test/java/cz/moneta/test/system/messaging/ImqFirstVisionTest.java @@ -1,5 +1,7 @@ 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; @@ -8,14 +10,33 @@ import cz.moneta.test.harness.endpoints.imq.ImqFirstVisionQueue; /** * Unit tests for IBM MQ First Vision DSL methods. */ -@TestScenario(name = "Send MQ message") +@TestScenario(name = "IBM MQ First Vision DSL Tests") public class ImqFirstVisionTest { - @TestCase(name = "Send JSON message") - public void sendJsonMessage(Harness harness) { - harness.withImqFirstVision() - .toQueue(ImqFirstVisionQueue.PAYMENT_NOTIFICATIONS) - .withPayload("{\"paymentId\": \"PAY-456\", \"result\": \"OK\"}") - .send(); - } + @TestCase(name = "Send JSON message") + public void sendJsonMessage(Harness harness) { + harness.withImqFirstVision().toQueue(ImqFirstVisionQueue.PAYMENT_NOTIFICATIONS).asJson() + .withPayload("{\"paymentId\": \"PAY-456\", \"result\": \"OK\"}").send(); + } + + @TestCase(name = "Receive JSON message") + public void receiveJsonMessage(Harness harness) { + harness.withImqFirstVision().fromQueue(ImqFirstVisionQueue.PAYMENT_NOTIFICATIONS).asJson() + .receiveWhere(msg -> msg.extract("paymentId").equals("PAY-456")).withTimeout(10, TimeUnit.SECONDS) + .andAssertFieldValue("result", "OK"); + } + + @TestCase(name = "Send XML message") + public void sendXmlMessage(Harness harness) { + harness.withImqFirstVision().toQueue(ImqFirstVisionQueue.MF_REQUESTS).asXml() + .withPayload("1234550000").send(); + } + + @TestCase(name = "Receive XML message") + public void receiveXmlMessage(Harness harness) { + harness.withImqFirstVision().fromQueue(ImqFirstVisionQueue.MF_RESPONSES).asXml() + .receiveWhere(msg -> msg.extract("/request/accountId").equals("12345")) + .withTimeout(15, TimeUnit.SECONDS).andAssertFieldValue("/request/balance", "50000"); + } + }