From 2e54630a6c5a52a1c61489f10111ff58808b97ed Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Fri, 16 Jul 2021 15:38:57 +0200 Subject: [PATCH] Bumped Pact to 4.2.7 --- pom.xml | 10 +-- samples/standalone/dsl/http-client/pom.xml | 2 +- .../spring-cloud-contract-pact/pom.xml | 8 +- .../stubrunner/PactStubDownloaderBuilder.java | 79 ++++++++++++++++--- .../spec/pact/MatchingRulesConverter.java | 8 +- .../spec/pact/MessagePactCreator.java | 2 +- .../spec/pact/MessagingSCContractCreator.java | 20 +++-- .../spec/pact/PactContractConverter.java | 16 ++-- .../RequestResponseSCContractCreator.java | 48 ++++++----- .../spec/pact/ValueGeneratorConverter.java | 2 +- .../PactStubDownloaderBuilderSpec.groovy | 2 +- .../pact/PactContractConverterSpec.groovy | 6 +- .../contracts/grouped/shouldWorkWithBeer.json | 2 +- .../contracts/shouldConvertAllGenerators.json | 2 +- .../contracts/shouldMarkClientAsFraud.json | 2 +- .../contracts/shouldMarkClientAsNotFraud.json | 2 +- .../contracts/shouldReturnFraudStats.json | 2 +- .../shouldSendMessageWhenBookReturned.json | 2 +- .../shouldSendMessageWhenMessageReceived.json | 2 +- .../shouldVerifyWhenBookWasDeleted.json | 2 +- 20 files changed, 142 insertions(+), 77 deletions(-) diff --git a/pom.xml b/pom.xml index 84136862fe..12d0b39cac 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ 3.11.0 - 4.0.10 + 4.2.7 0.0.9 3.1.0-SNAPSHOT 3.1.0-SNAPSHOT @@ -207,8 +207,8 @@ ${commons-text.version} - au.com.dius - pact-jvm-consumer + au.com.dius.pact.consumer + junit5 ${pact.version} @@ -222,8 +222,8 @@ - au.com.dius - pact-jvm-provider-junit + au.com.dius.pact.provider + junit5 ${pact.version} diff --git a/samples/standalone/dsl/http-client/pom.xml b/samples/standalone/dsl/http-client/pom.xml index 2556d1585b..f75f750fb5 100644 --- a/samples/standalone/dsl/http-client/pom.xml +++ b/samples/standalone/dsl/http-client/pom.xml @@ -21,7 +21,7 @@ UTF-8 1.8 - 2020.0.0-SNAPSHOT + 2021.0.0-SNAPSHOT diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/pom.xml b/spring-cloud-contract-tools/spring-cloud-contract-pact/pom.xml index 36b4d9a3e4..169d92f1c3 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/pom.xml +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/pom.xml @@ -39,12 +39,12 @@ groovy-nio - au.com.dius - pact-jvm-consumer + au.com.dius.pact.consumer + junit5 - au.com.dius - pact-jvm-provider-junit + au.com.dius.pact.provider + junit5 org.springframework.boot diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilder.java b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilder.java index 9ac4256039..aa3fedd30f 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilder.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilder.java @@ -35,14 +35,16 @@ import au.com.dius.pact.core.model.Pact; import au.com.dius.pact.core.model.PactSpecVersion; import au.com.dius.pact.core.support.expressions.SystemPropertyResolver; import au.com.dius.pact.core.support.expressions.ValueResolver; -import au.com.dius.pact.provider.junit.loader.PactBroker; -import au.com.dius.pact.provider.junit.loader.PactBrokerAuth; -import au.com.dius.pact.provider.junit.loader.PactBrokerLoader; -import au.com.dius.pact.provider.junit.loader.PactLoader; +import au.com.dius.pact.provider.junitsupport.loader.PactBroker; +import au.com.dius.pact.provider.junitsupport.loader.PactBrokerAuth; +import au.com.dius.pact.provider.junitsupport.loader.PactBrokerLoader; +import au.com.dius.pact.provider.junitsupport.loader.PactLoader; +import au.com.dius.pact.provider.junitsupport.loader.VersionSelector; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jetbrains.annotations.Nullable; import org.springframework.cloud.contract.spec.Contract; import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties; @@ -241,25 +243,66 @@ class PactStubDownloader implements StubDownloader { } @Override + public String url() { + return resolver.resolveValue("pactbroker.url:" + pactBrokerUrl.getScheme() + "://" + + pactBrokerUrl.getHost() + ":" + pactBrokerUrl.getPort()); + } + + @Override + @Deprecated public String host() { return resolver.resolveValue("pactbroker.host:" + pactBrokerUrl.getHost()); } @Override + @Deprecated public String port() { return resolver.resolveValue("pactbroker.port:" + pactBrokerUrl.getPort()); } @Override + @Deprecated public String scheme() { return resolver.resolveValue("pactbroker.protocol:" + pactBrokerUrl.getScheme()); } @Override + @Deprecated public String[] tags() { return tags.toArray(new String[0]); } + @Override + public VersionSelector[] consumerVersionSelectors() { + return new VersionSelector[] { new VersionSelector() { + + @Override + public Class annotationType() { + return VersionSelector.class; + } + + @Override + public String tag() { + return resolver.resolveValue("pactbroker.consumerversionselectors.tags:"); + } + + @Override + public String latest() { + return resolver.resolveValue("pactbroker.consumerversionselectors.latest:"); + } + + @Override + public String consumer() { + return resolver.resolveValue("pactbroker.consumers:"); + } + + @Override + public String fallbackTag() { + return null; + } + } }; + } + @Override public String[] consumers() { return new String[] { resolver.resolveValue("pactbroker.consumers:") }; @@ -273,11 +316,6 @@ class PactStubDownloader implements StubDownloader { return PactBrokerAuth.class; } - @Override - public String scheme() { - return resolver.resolveValue("pactbroker.auth.scheme:Basic"); - } - @Override public String username() { return resolver.resolveValue("pactbroker.auth.username:" + stubRunnerUsername); @@ -299,6 +337,21 @@ class PactStubDownloader implements StubDownloader { public Class valueResolver() { return SystemPropertyResolver.class; } + + @Override + public String enablePendingPacts() { + return null; + } + + @Override + public String[] providerTags() { + return new String[0]; + } + + @Override + public String includeWipPactsSince() { + return null; + } }); } @@ -334,7 +387,7 @@ class PactStubDownloader implements StubDownloader { class FromPropsThenFromSysEnv implements ValueResolver { - final SystemPropertyResolver resolver = new SystemPropertyResolver(); + final SystemPropertyResolver resolver = SystemPropertyResolver.INSTANCE; StubRunnerOptions options; @@ -364,6 +417,12 @@ class FromPropsThenFromSysEnv implements ValueResolver { return this.resolver.propertyDefined(property); } + @Nullable + @Override + public String resolveValue(String expression, String defaultValue) { + return resolveValue(expression); + } + } // taken from pact - diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MatchingRulesConverter.java b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MatchingRulesConverter.java index 21d7b4d8c8..f655129f20 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MatchingRulesConverter.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MatchingRulesConverter.java @@ -16,9 +16,9 @@ package org.springframework.cloud.contract.verifier.spec.pact; -import au.com.dius.pact.core.model.matchingrules.Category; import au.com.dius.pact.core.model.matchingrules.DateMatcher; import au.com.dius.pact.core.model.matchingrules.EqualsMatcher; +import au.com.dius.pact.core.model.matchingrules.MatchingRuleCategory; import au.com.dius.pact.core.model.matchingrules.MaxTypeMatcher; import au.com.dius.pact.core.model.matchingrules.MinMaxTypeMatcher; import au.com.dius.pact.core.model.matchingrules.MinTypeMatcher; @@ -43,12 +43,12 @@ final class MatchingRulesConverter { private MatchingRulesConverter() { } - static Category matchingRulesForBody(BodyMatchers bodyMatchers) { + static MatchingRuleCategory matchingRulesForBody(BodyMatchers bodyMatchers) { return matchingRulesFor("body", bodyMatchers); } - private static Category matchingRulesFor(String categoryName, BodyMatchers bodyMatchers) { - Category category = new Category(categoryName); + private static MatchingRuleCategory matchingRulesFor(String categoryName, BodyMatchers bodyMatchers) { + MatchingRuleCategory category = new MatchingRuleCategory(categoryName); bodyMatchers.matchers().forEach((b) -> { String key = getMatcherKey(b.path()); MatchingType matchingType = b.matchingType(); diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MessagePactCreator.java b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MessagePactCreator.java index 10e3aae3a5..3b26007cc4 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MessagePactCreator.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MessagePactCreator.java @@ -51,7 +51,7 @@ class MessagePactCreator { return null; } Names names = NamingUtil.name(contracts.get(0)); - MessagePactBuilder pactBuilder = MessagePactBuilder.consumer(names.getConsumer()) + MessagePactBuilder pactBuilder = new MessagePactBuilder().consumer(names.getConsumer()) .hasPactWith(names.getProducer()); for (Contract contract : contracts) { diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MessagingSCContractCreator.java b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MessagingSCContractCreator.java index d0c7e3d3fb..7ac77f2891 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MessagingSCContractCreator.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/MessagingSCContractCreator.java @@ -21,9 +21,9 @@ import java.util.Collections; import java.util.List; import java.util.stream.Collectors; -import au.com.dius.pact.core.model.matchingrules.Category; import au.com.dius.pact.core.model.matchingrules.DateMatcher; import au.com.dius.pact.core.model.matchingrules.MatchingRule; +import au.com.dius.pact.core.model.matchingrules.MatchingRuleCategory; import au.com.dius.pact.core.model.matchingrules.MaxTypeMatcher; import au.com.dius.pact.core.model.matchingrules.MinMaxTypeMatcher; import au.com.dius.pact.core.model.matchingrules.MinTypeMatcher; @@ -36,8 +36,6 @@ import au.com.dius.pact.core.model.matchingrules.TimestampMatcher; import au.com.dius.pact.core.model.matchingrules.TypeMatcher; import au.com.dius.pact.core.model.messaging.Message; import au.com.dius.pact.core.model.messaging.MessagePact; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.cloud.contract.spec.Contract; @@ -65,20 +63,20 @@ class MessagingSCContractCreator { Collection convertFrom(MessagePact pact) { return pact.getMessages().stream().map(message -> Contract.make(contract -> { contract.label(message.getDescription()); - if (CollectionUtils.isNotEmpty(message.getProviderStates())) { + if (!message.getProviderStates().isEmpty()) { contract.input(i -> i.triggeredBy(this.getTriggeredBy(message))); } contract.outputMessage((outputMessage) -> { if (message.getContents().isPresent()) { outputMessage.body(BodyConverter.toSCCBody(message)); - Category bodyRules = message.getMatchingRules().rulesForCategory("body"); - if (bodyRules != null && MapUtils.isNotEmpty(bodyRules.getMatchingRules())) { + MatchingRuleCategory bodyRules = message.getMatchingRules().rulesForCategory("body"); + if (bodyRules != null && !bodyRules.getMatchingRules().isEmpty()) { outputMessage.bodyMatchers((responseBodyMatchers) -> outputMessageBodyMatchers(message, bodyRules, responseBodyMatchers)); } } - if (MapUtils.isNotEmpty(message.getMetaData())) { + if (!message.getMetadata().isEmpty()) { outputMessage.headers((headers) -> outputMessageHeaders(message, headers)); } String dest = findDestination(message); @@ -90,7 +88,7 @@ class MessagingSCContractCreator { } private void outputMessageHeaders(Message message, Headers headers) { - message.getMetaData().forEach((key, value) -> { + message.getMetadata().forEach((key, value) -> { String matchingRuleGroup = value.toString(); if (key.equalsIgnoreCase("contentType")) { headers.messagingContentType(matchingRuleGroup); @@ -101,7 +99,7 @@ class MessagingSCContractCreator { }); } - private void outputMessageBodyMatchers(Message message, Category bodyRules, + private void outputMessageBodyMatchers(Message message, MatchingRuleCategory bodyRules, ResponseBodyMatchers responseBodyMatchers) { bodyRules.getMatchingRules().forEach((matchingRuleKey, matchingRuleGroup) -> { if (matchingRuleGroup.getRuleLogic() != RuleLogic.AND) { @@ -129,8 +127,8 @@ class MessagingSCContractCreator { } private String findDestination(Message message) { - return message.getMetaData().get(DESTINATION_KEY) != null - ? message.getMetaData().get(DESTINATION_KEY).toString() : ""; + return message.getMetadata().get(DESTINATION_KEY) != null + ? message.getMetadata().get(DESTINATION_KEY).toString() : ""; } void applyJsonPathToResponseBodyMatchers(MatchingRule matchingRule, String key, diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverter.java b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverter.java index 45d0585441..8a266577ae 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverter.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverter.java @@ -46,7 +46,7 @@ import org.springframework.cloud.contract.spec.ContractConverter; * @author Stessy Delcroix * @since 1.1.0 */ -public class PactContractConverter implements ContractConverter>> { +public class PactContractConverter implements ContractConverter> { private static final ObjectMapper OBJECT_MAPPER = ObjectMapperFactory.INSTANCE.getMapper(); @@ -61,8 +61,8 @@ public class PactContractConverter implements ContractConverter convertFrom(File file) { - Pact pact = DefaultPactReader.INSTANCE.loadPact(file); + Pact pact = DefaultPactReader.INSTANCE.loadPact(file); if (pact instanceof RequestResponsePact) { return requestResponseSCContractCreator.convertFrom((RequestResponsePact) pact); } @@ -83,8 +83,8 @@ public class PactContractConverter implements ContractConverter> convertTo(Collection contracts) { - List> pactContracts = new ArrayList<>(); + public Collection convertTo(Collection contracts) { + List pactContracts = new ArrayList<>(); Map> groupedContracts = contracts.stream() .collect(Collectors.groupingBy(c -> NamingUtil.name(c).toString())); for (List list : groupedContracts.values()) { @@ -103,7 +103,7 @@ public class PactContractConverter implements ContractConverter store(Collection> contracts) { + public Map store(Collection contracts) { return contracts.stream().collect(Collectors.toMap(this::name, c -> { try { return this.buildPrettyPrint(OBJECT_MAPPER.writeValueAsString(c.toMap(PactSpecVersion.V3))).getBytes(); @@ -114,7 +114,7 @@ public class PactContractConverter implements ContractConverter contract) { + protected String name(Pact contract) { return contract.getConsumer().getName() + "_" + contract.getProvider().getName() + "_" + Math.abs(contract.hashCode()) + ".json"; } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/RequestResponseSCContractCreator.java b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/RequestResponseSCContractCreator.java index 709cbabf92..d642230c1e 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/RequestResponseSCContractCreator.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/RequestResponseSCContractCreator.java @@ -23,15 +23,16 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; +import au.com.dius.pact.core.model.Interaction; import au.com.dius.pact.core.model.OptionalBody; import au.com.dius.pact.core.model.ProviderState; import au.com.dius.pact.core.model.Request; import au.com.dius.pact.core.model.RequestResponseInteraction; import au.com.dius.pact.core.model.RequestResponsePact; import au.com.dius.pact.core.model.Response; -import au.com.dius.pact.core.model.matchingrules.Category; import au.com.dius.pact.core.model.matchingrules.DateMatcher; import au.com.dius.pact.core.model.matchingrules.MatchingRule; +import au.com.dius.pact.core.model.matchingrules.MatchingRuleCategory; import au.com.dius.pact.core.model.matchingrules.MatchingRuleGroup; import au.com.dius.pact.core.model.matchingrules.MaxTypeMatcher; import au.com.dius.pact.core.model.matchingrules.MinMaxTypeMatcher; @@ -43,7 +44,6 @@ import au.com.dius.pact.core.model.matchingrules.RuleLogic; import au.com.dius.pact.core.model.matchingrules.TimeMatcher; import au.com.dius.pact.core.model.matchingrules.TimestampMatcher; import au.com.dius.pact.core.model.matchingrules.TypeMatcher; -import org.apache.commons.collections4.MapUtils; import org.springframework.cloud.contract.spec.Contract; import org.springframework.cloud.contract.spec.internal.RegexPatterns; @@ -69,17 +69,21 @@ class RequestResponseSCContractCreator { })).collect(Collectors.toList()); } - private void mapContractDescription(RequestResponseInteraction interaction, Contract contract) { + private void mapContractDescription(Interaction interaction, Contract contract) { contract.description(buildDescription(interaction)); } - private void mapContractRequest(RequestResponseInteraction interaction, Contract contract) { + private void mapContractRequest(Interaction inter, Contract contract) { contract.request((contractRequest) -> { + if (!(inter instanceof RequestResponseInteraction)) { + return; + } + RequestResponseInteraction interaction = (RequestResponseInteraction) inter; Request pactRequest = interaction.getRequest(); contractRequest.method(pactRequest.getMethod()); mapRequestUrl(contractRequest, pactRequest); - if (MapUtils.isNotEmpty(pactRequest.getHeaders())) { + if (!pactRequest.getHeaders().isEmpty()) { mapRequestHeaders(contractRequest, pactRequest); } if (pactRequest.getHeaders().containsKey("Cookie")) { @@ -88,26 +92,30 @@ class RequestResponseSCContractCreator { if (pactRequest.getBody().getState() == OptionalBody.State.PRESENT) { mapRequestBody(contractRequest, pactRequest); } - Category bodyRules = pactRequest.getMatchingRules().rulesForCategory("body"); - if (MapUtils.isNotEmpty(bodyRules.getMatchingRules())) { + MatchingRuleCategory bodyRules = pactRequest.getMatchingRules().rulesForCategory("body"); + if (!bodyRules.getMatchingRules().isEmpty()) { mapRequestBodyRules(contractRequest, bodyRules); } }); } - private void mapContractResponse(RequestResponseInteraction interaction, Contract contract) { + private void mapContractResponse(Interaction inter, Contract contract) { contract.response((contractResponse) -> { + if (!(inter instanceof RequestResponseInteraction)) { + return; + } + RequestResponseInteraction interaction = (RequestResponseInteraction) inter; Response pactResponse = interaction.getResponse(); contractResponse.status(pactResponse.getStatus()); if (pactResponse.getBody().isPresent()) { mapResponseBody(contractResponse, pactResponse); } - Category bodyRules = pactResponse.getMatchingRules().rulesForCategory("body"); - if (MapUtils.isNotEmpty(bodyRules.getMatchingRules())) { + MatchingRuleCategory bodyRules = pactResponse.getMatchingRules().rulesForCategory("body"); + if (!bodyRules.getMatchingRules().isEmpty()) { mapResponseBodyRules(contractResponse, pactResponse, bodyRules); } - if (MapUtils.isNotEmpty(pactResponse.getHeaders())) { + if (!pactResponse.getHeaders().isEmpty()) { mapResponseHeaders(contractResponse, pactResponse); } @@ -118,7 +126,7 @@ class RequestResponseSCContractCreator { } private void mapResponseBodyRules(org.springframework.cloud.contract.spec.internal.Response contractResponse, - Response pactResponse, Category bodyRules) { + Response pactResponse, MatchingRuleCategory bodyRules) { contractResponse.bodyMatchers((bodyMatchers) -> { bodyRules.getMatchingRules().forEach((key, matchindRuleGroup) -> { if (matchindRuleGroup.getRuleLogic() != RuleLogic.AND) { @@ -202,7 +210,7 @@ class RequestResponseSCContractCreator { } private void mapRequestBodyRules(org.springframework.cloud.contract.spec.internal.Request contractRequest, - Category bodyRules) { + MatchingRuleCategory bodyRules) { contractRequest.bodyMatchers((bodyMatchers) -> { bodyRules.getMatchingRules().forEach((key, matchingRuleGroup) -> { if (matchingRuleGroup.getRuleLogic() != RuleLogic.AND) { @@ -259,7 +267,7 @@ class RequestResponseSCContractCreator { private void mapRequestCookies(org.springframework.cloud.contract.spec.internal.Request contractRequest, Request pactRequest) { - Category headerRules = pactRequest.getMatchingRules().rulesForCategory("header"); + MatchingRuleCategory headerRules = pactRequest.getMatchingRules().rulesForCategory("header"); String[] splitCookiesHeader = pactRequest.getHeaders().get("Cookie").get(0).split(";"); Map foundCookies = Stream.of(splitCookiesHeader).map((cookieHeader) -> cookieHeader.split("=")) .collect(Collectors.toMap(splittedCookieHeader -> splittedCookieHeader[0], @@ -292,7 +300,7 @@ class RequestResponseSCContractCreator { private void mapResponseCookies(org.springframework.cloud.contract.spec.internal.Response contractResponse, Response pactResponse) { - Category headerRules = pactResponse.getMatchingRules().rulesForCategory("header"); + MatchingRuleCategory headerRules = pactResponse.getMatchingRules().rulesForCategory("header"); String[] splitCookiesHeader = pactResponse.getHeaders().get("Cookie").get(0).split(";"); Map foundCookies = Stream.of(splitCookiesHeader).map((cookieHeader) -> cookieHeader.split("=")) .collect(Collectors.toMap(splittedCookieHeader -> splittedCookieHeader[0], @@ -325,7 +333,7 @@ class RequestResponseSCContractCreator { private void mapRequestUrl(org.springframework.cloud.contract.spec.internal.Request contractRequest, Request pactRequest) { - if (MapUtils.isNotEmpty(pactRequest.getQuery())) { + if (!pactRequest.getQuery().isEmpty()) { contractRequest.url(pactRequest.getPath(), (url) -> url.queryParameters((queryParameters) -> pactRequest.getQuery().forEach((key, values) -> values.forEach((singleValue) -> queryParameters.parameter(key, singleValue))))); @@ -337,7 +345,7 @@ class RequestResponseSCContractCreator { private void mapRequestHeaders(org.springframework.cloud.contract.spec.internal.Request contractRequest, Request pactRequest) { - Category headerRules = pactRequest.getMatchingRules().rulesForCategory("header"); + MatchingRuleCategory headerRules = pactRequest.getMatchingRules().rulesForCategory("header"); contractRequest.headers((headers) -> pactRequest.getHeaders().forEach((key, values) -> { if (key.equalsIgnoreCase("Cookie")) { return; @@ -371,7 +379,7 @@ class RequestResponseSCContractCreator { private void mapResponseHeaders(org.springframework.cloud.contract.spec.internal.Response contractResponse, Response pactResponse) { - Category headerRules = pactResponse.getMatchingRules().rulesForCategory("header"); + MatchingRuleCategory headerRules = pactResponse.getMatchingRules().rulesForCategory("header"); contractResponse.headers((headers) -> pactResponse.getHeaders().forEach((key, values) -> { if (key.equalsIgnoreCase("Cookie")) { return; @@ -403,13 +411,13 @@ class RequestResponseSCContractCreator { })); } - private String buildDescription(RequestResponseInteraction interaction) { + private String buildDescription(Interaction interaction) { StringBuilder description = new StringBuilder(interaction.getDescription()); List providerStates = interaction.getProviderStates(); for (ProviderState providerState : providerStates) { description.append(" ").append(providerState.getName()); Map params = providerState.getParams(); - if (MapUtils.isNotEmpty(params)) { + if (!params.isEmpty()) { description.append("("); params.forEach((k, v) -> { description.append(k).append(": ").append(v.toString()).append(", "); diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/ValueGeneratorConverter.java b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/ValueGeneratorConverter.java index fb6833e5d1..bc09d73e84 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/ValueGeneratorConverter.java +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/main/java/org/springframework/cloud/contract/verifier/spec/pact/ValueGeneratorConverter.java @@ -133,7 +133,7 @@ final class ValueGeneratorConverter { "We currently don't support a generator of type " + generator.getClass().getSimpleName()); } else { - Object generatedValue = generator.generate(new HashMap<>()); + Object generatedValue = generator.generate(new HashMap<>(), null); return dslPropertyProvider.apply(pattern, generatedValue); } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilderSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilderSpec.groovy index 204a4675c3..4ba7756350 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilderSpec.groovy +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/stubrunner/PactStubDownloaderBuilderSpec.groovy @@ -20,7 +20,7 @@ import java.nio.file.Files import au.com.dius.pact.core.model.Pact import au.com.dius.pact.core.model.PactSource -import au.com.dius.pact.provider.junit.loader.PactLoader +import au.com.dius.pact.provider.junitsupport.loader.PactLoader import au.com.dius.pact.core.support.expressions.ValueResolver import com.github.tomakehurst.wiremock.stubbing.StubMapping import spock.lang.Ignore diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverterSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverterSpec.groovy index 6265a82a18..0bbeff09ae 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverterSpec.groovy +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/groovy/org/springframework/cloud/contract/verifier/spec/pact/PactContractConverterSpec.groovy @@ -138,10 +138,10 @@ class PactContractConverterSpec extends Specification { headers { header(contentType(), applicationJsonUtf8()) } - body(id: 42, firstName: "Arthur", lastName: "Dent") + body(firstName: "Arthur", id: 42, lastName: "Dent") bodyMatchers { - jsonPath('''$.['id']''', byType()) jsonPath('''$.['firstName']''', byType()) + jsonPath('''$.['id']''', byType()) jsonPath('''$.['lastName']''', byType()) } } @@ -347,7 +347,7 @@ class PactContractConverterSpec extends Specification { ], "metadata": { "pact-jvm": { - "version": "4.0.10" + "version": "4.2.7" } } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/grouped/shouldWorkWithBeer.json b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/grouped/shouldWorkWithBeer.json index 3419204454..f7eb25ac2b 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/grouped/shouldWorkWithBeer.json +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/grouped/shouldWorkWithBeer.json @@ -147,7 +147,7 @@ ], "metadata": { "pact-jvm": { - "version": "4.0.10" + "version": "4.2.7" } } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldConvertAllGenerators.json b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldConvertAllGenerators.json index 2f6e626f26..2ef331119e 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldConvertAllGenerators.json +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldConvertAllGenerators.json @@ -274,7 +274,7 @@ "version": "3.0.0" }, "pact-jvm": { - "version": "4.0.10" + "version": "4.2.7" } } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldMarkClientAsFraud.json b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldMarkClientAsFraud.json index 54f4f84854..8842b92da8 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldMarkClientAsFraud.json +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldMarkClientAsFraud.json @@ -98,7 +98,7 @@ "version": "3.0.0" }, "pact-jvm": { - "version": "4.0.10" + "version": "4.2.7" } } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldMarkClientAsNotFraud.json b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldMarkClientAsNotFraud.json index 02905b5917..1bcf442ace 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldMarkClientAsNotFraud.json +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldMarkClientAsNotFraud.json @@ -90,7 +90,7 @@ "version": "3.0.0" }, "pact-jvm": { - "version": "4.0.10" + "version": "4.2.7" } } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldReturnFraudStats.json b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldReturnFraudStats.json index 4db5be7026..694f872512 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldReturnFraudStats.json +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldReturnFraudStats.json @@ -70,7 +70,7 @@ "version": "3.0.0" }, "pact-jvm": { - "version": "4.0.10" + "version": "4.2.7" } } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldSendMessageWhenBookReturned.json b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldSendMessageWhenBookReturned.json index c52e141de8..44b2179098 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldSendMessageWhenBookReturned.json +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldSendMessageWhenBookReturned.json @@ -39,7 +39,7 @@ "version": "3.0.0" }, "pact-jvm": { - "version": "4.0.10" + "version": "4.2.7" } } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldSendMessageWhenMessageReceived.json b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldSendMessageWhenMessageReceived.json index 2d60416126..6d476405d1 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldSendMessageWhenMessageReceived.json +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldSendMessageWhenMessageReceived.json @@ -38,7 +38,7 @@ "version": "3.0.0" }, "pact-jvm": { - "version": "4.0.10" + "version": "4.2.7" } } } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldVerifyWhenBookWasDeleted.json b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldVerifyWhenBookWasDeleted.json index 594e8853a4..c8359cf289 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldVerifyWhenBookWasDeleted.json +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/src/test/resources/contracts/shouldVerifyWhenBookWasDeleted.json @@ -22,7 +22,7 @@ "version": "3.0.0" }, "pact-jvm": { - "version": "4.0.10" + "version": "4.2.7" } } }