From 2142931114c30dd8eb4e4adf215c45cf79fb3940 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 11 Apr 2022 14:13:45 +0200 Subject: [PATCH] Made tests less brittle --- .../messaging/kafka/KafkaStubRunnerSpec.groovy | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/spring-cloud-contract-stub-runner-kafka/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/kafka/KafkaStubRunnerSpec.groovy b/tests/spring-cloud-contract-stub-runner-kafka/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/kafka/KafkaStubRunnerSpec.groovy index 0915919b32..5f11a176fb 100644 --- a/tests/spring-cloud-contract-stub-runner-kafka/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/kafka/KafkaStubRunnerSpec.groovy +++ b/tests/spring-cloud-contract-stub-runner-kafka/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/kafka/KafkaStubRunnerSpec.groovy @@ -22,6 +22,8 @@ import java.util.concurrent.TimeUnit import groovy.json.JsonOutput import groovy.json.JsonSlurper import groovy.util.logging.Commons +import org.apache.kafka.clients.consumer.MockConsumer +import org.apache.kafka.clients.consumer.OffsetResetStrategy import spock.lang.IgnoreIf import spock.lang.Specification import spock.util.concurrent.PollingConditions @@ -38,6 +40,7 @@ import org.springframework.kafka.annotation.EnableKafka import org.springframework.kafka.annotation.KafkaListener import org.springframework.kafka.core.KafkaTemplate import org.springframework.kafka.support.DefaultKafkaHeaderMapper +import org.springframework.kafka.test.EmbeddedKafkaBroker import org.springframework.kafka.test.context.EmbeddedKafka import org.springframework.messaging.Message import org.springframework.messaging.MessageHeaders @@ -190,8 +193,8 @@ class KafkaStubRunnerSpec extends Specification { // end::trigger_all[] Message receivedMessage = receiveFromOutput() assert receivedMessage != null - assert assertThatBodyContainsBookNameFoo(receivedMessage.getPayload()) - assert receivedMessage.getHeaders().get('BOOK-NAME') == 'foo' + assert assertThatBodyContainsBookName(receivedMessage.getPayload()) + assert receivedMessage.getHeaders().get('BOOK-NAME') != null } } @@ -229,6 +232,14 @@ class KafkaStubRunnerSpec extends Specification { return json.bookName == expectedValue } + private boolean assertThatBodyContainsBookName(Object payload) { + log.info("Got payload [" + payload + "]") + String objectAsString = payload instanceof String ? payload : + JsonOutput.toJson(payload) + def json = new JsonSlurper().parseText(objectAsString) + return json.bookName != null + } + @Configuration @ComponentScan @EnableAutoConfiguration @@ -267,4 +278,4 @@ class KafkaStubRunnerSpec extends Specification { return this.output } } -} \ No newline at end of file +}