diff --git a/spring-cloud-contract-dependencies/pom.xml b/spring-cloud-contract-dependencies/pom.xml index 5201cead33..a80b5dbf93 100644 --- a/spring-cloud-contract-dependencies/pom.xml +++ b/spring-cloud-contract-dependencies/pom.xml @@ -15,7 +15,7 @@ spring-cloud-contract-dependencies Spring Cloud Contract Dependencies - 2.31.0 + 2.33.0 0.6.1 diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/TestWireMockExtensions.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/TestWireMockExtensions.groovy index bb69a4b1fc..346f457730 100644 --- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/TestWireMockExtensions.groovy +++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/TestWireMockExtensions.groovy @@ -24,7 +24,6 @@ import com.github.tomakehurst.wiremock.http.ChunkedDribbleDelay import com.github.tomakehurst.wiremock.http.HttpHeader import com.github.tomakehurst.wiremock.http.Request import com.github.tomakehurst.wiremock.http.Response -import wiremock.org.apache.http.HttpHeaders import org.springframework.cloud.contract.verifier.dsl.wiremock.DefaultResponseTransformer import org.springframework.cloud.contract.verifier.dsl.wiremock.WireMockExtensions diff --git a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/wiremock/DefaultWireMockStubPostProcessor.java b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/wiremock/DefaultWireMockStubPostProcessor.java index 6126e7fcf0..c7a646d4c9 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/wiremock/DefaultWireMockStubPostProcessor.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/main/java/org/springframework/cloud/contract/verifier/wiremock/DefaultWireMockStubPostProcessor.java @@ -66,7 +66,7 @@ class DefaultWireMockStubPostProcessor implements WireMockStubPostProcessor { } public ResponseDefinition mergedResponse(StubMapping stubMapping, StubMapping stubMappingFromMetadata) { - ResponseDefinition responseDefinition = new ResponseDefinition(stubMapping.getResponse().getStatus(), + return new ResponseDefinition(stubMapping.getResponse().getStatus(), stubMapping.getResponse().getStatusMessage(), stubMapping.getResponse().getBody(), stubMapping.getResponse().getJsonBody(), stubMapping.getResponse().getBase64Body(), stubMapping.getResponse().getBodyFileName(), stubMapping.getResponse().getHeaders(), @@ -74,11 +74,11 @@ class DefaultWireMockStubPostProcessor implements WireMockStubPostProcessor { fixedDelayMilliseconds(stubMapping, stubMappingFromMetadata), delayDistribution(stubMapping, stubMappingFromMetadata), chunkedDribbleDelay(stubMapping, stubMappingFromMetadata), - proxyBaseUrl(stubMapping, stubMappingFromMetadata), fault(stubMapping, stubMappingFromMetadata), - transformers(stubMapping, stubMappingFromMetadata), + proxyBaseUrl(stubMapping, stubMappingFromMetadata), + proxyUrlPrefixToRemove(stubMapping, stubMappingFromMetadata), + fault(stubMapping, stubMappingFromMetadata), transformers(stubMapping, stubMappingFromMetadata), transformerParameters(stubMapping, stubMappingFromMetadata), wasConfigured(stubMapping, stubMappingFromMetadata)); - return responseDefinition; } public Boolean wasConfigured(StubMapping stubMapping, StubMapping stubMappingFromMetadata) { @@ -108,6 +108,12 @@ class DefaultWireMockStubPostProcessor implements WireMockStubPostProcessor { ? stubMappingFromMetadata.getResponse().getProxyBaseUrl() : stubMapping.getResponse().getProxyBaseUrl(); } + public String proxyUrlPrefixToRemove(StubMapping stubMapping, StubMapping stubMappingFromMetadata) { + return stubMappingFromMetadata.getResponse().getProxyUrlPrefixToRemove() != null + ? stubMappingFromMetadata.getResponse().getProxyUrlPrefixToRemove() + : stubMapping.getResponse().getProxyUrlPrefixToRemove(); + } + public ChunkedDribbleDelay chunkedDribbleDelay(StubMapping stubMapping, StubMapping stubMappingFromMetadata) { return stubMappingFromMetadata.getResponse().getChunkedDribbleDelay() != null ? stubMappingFromMetadata.getResponse().getChunkedDribbleDelay() 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 +}