From 3d68786ff44b271754a7ed245ab07eb0ed59426a Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 16 Aug 2021 10:25:52 +0200 Subject: [PATCH 1/2] Bumped WireMock to 2.30.1; fixes gh-1698 --- spring-cloud-contract-dependencies/pom.xml | 2 +- .../provider/wiremock/WireMockHttpServerStub.java | 4 ++-- .../wiremock/DefaultWireMockStubPostProcessor.java | 9 +++++---- .../DefaultWireMockStubPostProcessorTests.java | 12 ++++++++---- .../functionalTest/bootSimple/gradle.properties | 2 +- .../functionalTest/scenarioProject/gradle.properties | 2 +- .../scenarioProjectKotlin/gradle.properties | 2 +- .../dsl/wiremock/DefaultResponseTransformer.java | 8 ++++---- 8 files changed, 23 insertions(+), 18 deletions(-) diff --git a/spring-cloud-contract-dependencies/pom.xml b/spring-cloud-contract-dependencies/pom.xml index ca92d2161a..bdcf63646a 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.29.1 + 2.30.1 0.6.1 diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java index 9170dce2d9..6ef55142eb 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java @@ -99,8 +99,8 @@ public class WireMockHttpServerStub implements HttpServerStub { return extensions.toArray(new Extension[extensions.size()]); } - private Map helpers() { - Map helpers = new HashMap<>(); + private Map> helpers() { + Map> helpers = new HashMap<>(); helpers.put(HandlebarsJsonPathHelper.NAME, new HandlebarsJsonPathHelper()); helpers.put(HandlebarsEscapeHelper.NAME, new HandlebarsEscapeHelper()); return helpers; 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 cf19c020bc..6126e7fcf0 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 @@ -16,7 +16,7 @@ package org.springframework.cloud.contract.verifier.wiremock; -import java.util.HashMap; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -24,6 +24,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.tomakehurst.wiremock.common.Metadata; import com.github.tomakehurst.wiremock.extension.Parameters; +import com.github.tomakehurst.wiremock.extension.PostServeActionDefinition; import com.github.tomakehurst.wiremock.http.ChunkedDribbleDelay; import com.github.tomakehurst.wiremock.http.DelayDistribution; import com.github.tomakehurst.wiremock.http.Fault; @@ -51,9 +52,9 @@ class DefaultWireMockStubPostProcessor implements WireMockStubPostProcessor { } public void setPostServeActions(StubMapping stubMapping, StubMapping stubMappingFromMetadata) { - Map postServeActions = stubMapping.getPostServeActions(); - postServeActions = postServeActions != null ? postServeActions : new HashMap<>(); - postServeActions.putAll(stubMappingFromMetadata.getPostServeActions()); + List postServeActions = stubMapping.getPostServeActions(); + postServeActions = postServeActions != null ? postServeActions : new ArrayList<>(); + postServeActions.addAll(stubMappingFromMetadata.getPostServeActions()); stubMapping.setPostServeActions(postServeActions); } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/java/org/springframework/cloud/contract/verifier/wiremock/DefaultWireMockStubPostProcessorTests.java b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/java/org/springframework/cloud/contract/verifier/wiremock/DefaultWireMockStubPostProcessorTests.java index e231f2305a..cbf006e6e2 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/java/org/springframework/cloud/contract/verifier/wiremock/DefaultWireMockStubPostProcessorTests.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/java/org/springframework/cloud/contract/verifier/wiremock/DefaultWireMockStubPostProcessorTests.java @@ -18,10 +18,11 @@ package org.springframework.cloud.contract.verifier.wiremock; import java.util.HashMap; import java.util.Map; +import java.util.stream.Collectors; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.tomakehurst.wiremock.extension.Parameters; +import com.github.tomakehurst.wiremock.extension.PostServeActionDefinition; import com.github.tomakehurst.wiremock.stubbing.StubMapping; import org.junit.jupiter.api.Test; @@ -151,9 +152,12 @@ class DefaultWireMockStubPostProcessorTests { then(result.getRequest().getMethod().getName()).isEqualTo("GET"); then(result.getResponse().getStatus()).isEqualTo(200); then(result.getResponse().getBody()).isEqualTo("pong"); - then(result.getPostServeActions()).containsKey("webhook"); - Parameters webhook = result.getPostServeActions().get("webhook"); - then(webhook.getString("method")).isEqualTo("POST"); + then(result.getPostServeActions().stream().map(a -> a.getName()).collect(Collectors.toList())) + .contains("webhook"); + PostServeActionDefinition definition = result.getPostServeActions().stream() + .filter(a -> a.getName().equals("webhook")).findFirst() + .orElseThrow(() -> new AssertionError("No webhook action found")); + then(definition.getParameters().getString("method")).isEqualTo("POST"); } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/bootSimple/gradle.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/bootSimple/gradle.properties index 45f374a605..e59b82baa7 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/bootSimple/gradle.properties +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/bootSimple/gradle.properties @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -wiremockVersion=2.29.1 +wiremockVersion=2.30.1 jsonAssertVersion=0.6.1 verifierVersion=3.0.4-SNAPSHOT groovyVersion=2.4.17 diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/gradle.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/gradle.properties index 9f63a02fbe..1b29b682ee 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/gradle.properties +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/gradle.properties @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -wiremockVersion=2.29.1 +wiremockVersion=2.30.1 jsonAssertVersion=0.6.1 verifierVersion=3.0.4-SNAPSHOT bootVersion=2.4.7 diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradle.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradle.properties index 9f63a02fbe..1b29b682ee 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradle.properties +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradle.properties @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -wiremockVersion=2.29.1 +wiremockVersion=2.30.1 jsonAssertVersion=0.6.1 verifierVersion=3.0.4-SNAPSHOT bootVersion=2.4.7 diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/DefaultResponseTransformer.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/DefaultResponseTransformer.java index 49fc8369d3..aa2b81a6d6 100644 --- a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/DefaultResponseTransformer.java +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/dsl/wiremock/DefaultResponseTransformer.java @@ -42,16 +42,16 @@ public class DefaultResponseTransformer extends ResponseTemplateTransformer { super(global); } - public DefaultResponseTransformer(boolean global, String helperName, Helper helper) { + public DefaultResponseTransformer(boolean global, String helperName, Helper helper) { super(global, helperName, helper); } - public DefaultResponseTransformer(boolean global, Map helpers) { + public DefaultResponseTransformer(boolean global, Map> helpers) { super(global, helpers); } - private static Map defaultHelpers() { - Map helpers = new HashMap<>(); + private static Map> defaultHelpers() { + Map> helpers = new HashMap<>(); helpers.put(HandlebarsJsonPathHelper.NAME, new HandlebarsJsonPathHelper()); helpers.put(HandlebarsEscapeHelper.NAME, new HandlebarsEscapeHelper()); return helpers; From e5c8207d5743159566af2ce5de27e9b9be79b6fa Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Mon, 16 Aug 2021 11:13:36 +0200 Subject: [PATCH 2/2] Added plexus dependency; fixes gh-1697 --- pom.xml | 6 ++++++ .../spring-cloud-starter-contract-stub-runner/pom.xml | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/pom.xml b/pom.xml index c7f089df15..f24d8ae3dc 100644 --- a/pom.xml +++ b/pom.xml @@ -66,6 +66,7 @@ 1.4.32 1.9.4 + 2.6.0 true false @@ -420,6 +421,11 @@ maven-settings-builder ${maven.version} + + org.sonatype.sisu + sisu-inject-plexus + ${sisu-inject-plexus.version} + org.apache.maven.resolver maven-resolver diff --git a/spring-cloud-contract-starters/spring-cloud-starter-contract-stub-runner/pom.xml b/spring-cloud-contract-starters/spring-cloud-starter-contract-stub-runner/pom.xml index 07e5d76101..d6cfbb21da 100644 --- a/spring-cloud-contract-starters/spring-cloud-starter-contract-stub-runner/pom.xml +++ b/spring-cloud-contract-starters/spring-cloud-starter-contract-stub-runner/pom.xml @@ -79,6 +79,10 @@ org.apache.maven.resolver maven-resolver-api + + org.sonatype.sisu + sisu-inject-plexus +