diff --git a/docker/spring-cloud-contract-docker/get_dependencies.sh b/docker/spring-cloud-contract-docker/get_dependencies.sh index 1eabd3a1ea..08accea4e8 100755 --- a/docker/spring-cloud-contract-docker/get_dependencies.sh +++ b/docker/spring-cloud-contract-docker/get_dependencies.sh @@ -2,7 +2,7 @@ set -e -WRAPPER_VERSION="6.4" +WRAPPER_VERSION="7.0" GRADLE_BIN_DIR="gradle-${WRAPPER_VERSION}-bin" GRADLE_WRAPPER_DIR="${HOME}/.gradle/wrapper/dists/${GRADLE_BIN_DIR}" CURRENT_DIR="$( pwd )" diff --git a/docker/spring-cloud-contract-docker/project/gradle/wrapper/gradle-wrapper.jar b/docker/spring-cloud-contract-docker/project/gradle/wrapper/gradle-wrapper.jar index 62d4c05355..e708b1c023 100644 Binary files a/docker/spring-cloud-contract-docker/project/gradle/wrapper/gradle-wrapper.jar and b/docker/spring-cloud-contract-docker/project/gradle/wrapper/gradle-wrapper.jar differ diff --git a/docker/spring-cloud-contract-docker/project/gradle/wrapper/gradle-wrapper.properties b/docker/spring-cloud-contract-docker/project/gradle/wrapper/gradle-wrapper.properties index 4c5803d13c..f371643eed 100644 --- a/docker/spring-cloud-contract-docker/project/gradle/wrapper/gradle-wrapper.properties +++ b/docker/spring-cloud-contract-docker/project/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/docker/spring-cloud-contract-docker/project/gradlew b/docker/spring-cloud-contract-docker/project/gradlew index fbd7c51583..4f906e0c81 100755 --- a/docker/spring-cloud-contract-docker/project/gradlew +++ b/docker/spring-cloud-contract-docker/project/gradlew @@ -130,7 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath diff --git a/docker/spring-cloud-contract-docker/project/gradlew.bat b/docker/spring-cloud-contract-docker/project/gradlew.bat index a9f778a7a9..ac1b06f938 100644 --- a/docker/spring-cloud-contract-docker/project/gradlew.bat +++ b/docker/spring-cloud-contract-docker/project/gradlew.bat @@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -54,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -64,21 +64,6 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line @@ -86,7 +71,7 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/pom.xml b/pom.xml index ed595ac7fc..f1a4c9c07b 100644 --- a/pom.xml +++ b/pom.xml @@ -37,8 +37,7 @@ 3.0.6.RELEASE 5.0.4 3.2.11 - 1.3-groovy-2.5 - 0.5.1 + 2.0-M5-groovy-3.0 0.2.2 1.9 4.2.0 @@ -53,7 +52,7 @@ 1.12.1 - 2.5.14 + 3.0.8 3.6.3 @@ -196,9 +195,9 @@ - info.solidsoft.spock - spock-global-unroll - ${spock-global-unroll.version} + org.spockframework + spock-junit4 + ${spock-spring.version} io.specto diff --git a/samples/standalone/dsl/http-client/gradle/wrapper/gradle-wrapper.properties b/samples/standalone/dsl/http-client/gradle/wrapper/gradle-wrapper.properties index 4c5803d13c..f371643eed 100644 --- a/samples/standalone/dsl/http-client/gradle/wrapper/gradle-wrapper.properties +++ b/samples/standalone/dsl/http-client/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/samples/standalone/dsl/http-server/gradle/wrapper/gradle-wrapper.properties b/samples/standalone/dsl/http-server/gradle/wrapper/gradle-wrapper.properties index 4c5803d13c..f371643eed 100644 --- a/samples/standalone/dsl/http-server/gradle/wrapper/gradle-wrapper.properties +++ b/samples/standalone/dsl/http-server/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/samples/standalone/restdocs/http-client/gradle/wrapper/gradle-wrapper.properties b/samples/standalone/restdocs/http-client/gradle/wrapper/gradle-wrapper.properties index 4c5803d13c..f371643eed 100644 --- a/samples/standalone/restdocs/http-client/gradle/wrapper/gradle-wrapper.properties +++ b/samples/standalone/restdocs/http-client/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/samples/standalone/restdocs/http-server/gradle/wrapper/gradle-wrapper.properties b/samples/standalone/restdocs/http-server/gradle/wrapper/gradle-wrapper.properties index 4c5803d13c..f371643eed 100644 --- a/samples/standalone/restdocs/http-server/gradle/wrapper/gradle-wrapper.properties +++ b/samples/standalone/restdocs/http-server/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/samples/standalone/webclient/http-client/gradle/wrapper/gradle-wrapper.properties b/samples/standalone/webclient/http-client/gradle/wrapper/gradle-wrapper.properties index 4c5803d13c..f371643eed 100644 --- a/samples/standalone/webclient/http-client/gradle/wrapper/gradle-wrapper.properties +++ b/samples/standalone/webclient/http-client/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/samples/standalone/webclient/http-server/build.gradle b/samples/standalone/webclient/http-server/build.gradle index dab95ce0cc..5c2efeae1c 100644 --- a/samples/standalone/webclient/http-server/build.gradle +++ b/samples/standalone/webclient/http-server/build.gradle @@ -3,7 +3,6 @@ plugins { id "org.springframework.boot" id "io.spring.dependency-management" id "maven-publish" - id "maven" /** * While the SCC Gradle plugin is not strictly necessary for this project. * It is included to ensure that if the contractDslDir does not exist, then diff --git a/samples/standalone/webclient/http-server/gradle/wrapper/gradle-wrapper.properties b/samples/standalone/webclient/http-server/gradle/wrapper/gradle-wrapper.properties index 4c5803d13c..f371643eed 100644 --- a/samples/standalone/webclient/http-server/gradle/wrapper/gradle-wrapper.properties +++ b/samples/standalone/webclient/http-server/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/specs/spring-cloud-contract-spec-java/pom.xml b/specs/spring-cloud-contract-spec-java/pom.xml index 41813c4edb..1eebc5bf6d 100644 --- a/specs/spring-cloud-contract-spec-java/pom.xml +++ b/specs/spring-cloud-contract-spec-java/pom.xml @@ -66,11 +66,6 @@ spring-boot-starter-test test - - info.solidsoft.spock - spock-global-unroll - test - diff --git a/specs/spring-cloud-contract-spec/pom.xml b/specs/spring-cloud-contract-spec/pom.xml index 28eeff8d77..222cdbaad3 100644 --- a/specs/spring-cloud-contract-spec/pom.xml +++ b/specs/spring-cloud-contract-spec/pom.xml @@ -32,11 +32,6 @@ spring-boot-starter-test test - - info.solidsoft.spock - spock-global-unroll - test - diff --git a/spring-cloud-contract-stub-runner/pom.xml b/spring-cloud-contract-stub-runner/pom.xml index 1e8b3a228e..8022acce99 100644 --- a/spring-cloud-contract-stub-runner/pom.xml +++ b/spring-cloud-contract-stub-runner/pom.xml @@ -175,11 +175,6 @@ spring-boot-starter-web test - - info.solidsoft.spock - spock-global-unroll - test - org.springframework.cloud spring-cloud-starter-zookeeper-discovery @@ -215,6 +210,11 @@ spring-boot-starter-webflux test + + org.spockframework + spock-junit4 + test + diff --git a/spring-cloud-contract-tools/spring-cloud-contract-converters/pom.xml b/spring-cloud-contract-tools/spring-cloud-contract-converters/pom.xml index 4d0113aff6..fbc449378f 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-converters/pom.xml +++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/pom.xml @@ -61,11 +61,6 @@ spring-boot-starter-test test - - info.solidsoft.spock - spock-global-unroll - test - org.springframework.cloud spring-cloud-contract-wiremock @@ -81,6 +76,11 @@ rest-assured test + + org.spockframework + spock-junit4 + test + diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/build.gradle b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/build.gradle index 6c4955f501..f36d056fae 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/build.gradle +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/build.gradle @@ -2,19 +2,11 @@ buildscript { repositories { mavenCentral() mavenLocal() - if (project.hasProperty('fatJar')) { - jcenter() - } //For plugin-publish-plugin. Could be limited only to that dependency with Gradle 5.1+ - https://docs.gradle.org/5.1.1/release-notes.html#repository-to-dependency-matching gradlePluginPortal() } dependencies { - classpath "com.bmuschko:gradle-nexus-plugin:2.3" - classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.5.3" - classpath 'com.gradle.publish:plugin-publish-plugin:0.11.0' - if (project.hasProperty('fatJar')) { - classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3' - } + classpath 'com.gradle.publish:plugin-publish-plugin:0.14.0' } } @@ -47,8 +39,7 @@ repositories { jcenter() maven { url "https://repo.spring.io/snapshot" } maven { url "https://repo.spring.io/milestone" } - maven { url "https://repo.spring.io/libs-release-local" } - maven { url "https://repo.spring.io/libs-staging-local/" } + maven { url "https://repo.spring.io/release" } } //Dependencies in all subprojects - https://solidsoft.wordpress.com/2014/11/13/gradle-tricks-display-dependencies-for-all-subprojects-in-multi-project-build/ @@ -70,9 +61,9 @@ dependencies { implementation "org.apache.maven.resolver:maven-resolver-api:1.4.1" implementation "org.eclipse.jgit:org.eclipse.jgit:5.5.1.201910021850-r" implementation "com.jcraft:jsch.agentproxy.jsch:0.0.9" - implementation "com.fasterxml.jackson.core:jackson-databind:2.11.3" + implementation "com.fasterxml.jackson.core:jackson-databind:2.11.4" - implementation "org.springframework:spring-core:5.3.2" + implementation "org.springframework:spring-core:5.3.6" implementation("org.springframework.cloud:spring-cloud-contract-shade:${project.version}") api("org.springframework.cloud:spring-cloud-contract-stub-runner:${project.version}") { exclude(group: '*') @@ -81,10 +72,9 @@ dependencies { exclude(group: '*') } - testImplementation('org.spockframework:spock-core:1.3-groovy-2.5') { + testImplementation('org.spockframework:spock-core:2.0-M5-groovy-3.0') { // @releaser:version-check-off exclude(group: 'org.codehaus.groovy') } - testImplementation 'info.solidsoft.spock:spock-global-unroll:0.5.0' testImplementation localGroovy() testImplementation gradleTestKit() } @@ -112,16 +102,6 @@ dependencies { jansi 'org.fusesource.jansi:jansi:1.11' } -/*jacoco { - toolVersion = "0.7.7.201606060606" -} - -jacocoTestReport { - reports { - xml.enabled true - } -}*/ - jar { manifest { attributes 'Implementation-Version': project.version diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle/release.gradle b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle/release.gradle index 10cf0db599..aa9fcdaaa3 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle/release.gradle +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle/release.gradle @@ -1,10 +1,7 @@ // This setup seems to work. Let's not touch it. -apply plugin: 'maven' apply plugin: 'maven-publish' -//apply plugin: 'signing' - -uploadArchives.dependsOn { [check] } +//apply plugin: 'signing' task sourcesJar(type: Jar) { classifier 'sources' @@ -82,63 +79,6 @@ if (isReleaseToCentral) { } } -afterEvaluate { - uploadArchives { - repositories { - mavenDeployer { - // POM signature - if (isReleaseVersion && isReleaseToCentral) { - beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } - } - // Target repository - String repoUserName = isReleaseToCentral ? getProp("SONATYPE_USER") : repoUser - String repoPass = isReleaseToCentral ? getProp("SONATYPE_PASSWORD") : repoPass - repository(url: repoUrl) { - authentication(userName: repoUserName, password: repoPass) - } - pom.project { - name "$project.name" - packaging 'jar' - description 'Spring Cloud Contract Gradle Plugin' - url 'https://github.com/spring-cloud/spring-cloud-contract' - inceptionYear '2014' - - scm { - connection 'scm:git:git@github.com:spring-cloud/spring-cloud-contract.git' - developerConnection 'scm:git:git@github.com:spring-cloud/spring-cloud-contract.git' - url 'https://github.com/spring-cloud/spring-cloud-contract' - } - - licenses { - license { - name 'The Apache License, Version 2.0' - url 'https://www.apache.org/licenses/LICENSE-2.0.txt' - } - } - - developers { - developer { - id 'jkubrynski' - name 'Jakub Kubrynski' - email 'jk ATT codearte DOTT io' - } - developer { - id 'marcingrzejszczak' - name 'Marcin Grzejszczak' - email 'mgrzejszczak ATT pivotal DOTT io' - } - developer { - id 'dsyer' - name 'Dave Syer' - email 'dsyer ATT pivotal DOTT io' - } - } - } - } - } - } -} - String getProp(String propName) { return hasProperty(propName) ? (getProperty(propName) ?: System.properties[propName]) : System.properties[propName] ?: diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle/wrapper/gradle-wrapper.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle/wrapper/gradle-wrapper.properties index 4c5803d13c..f371643eed 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle/wrapper/gradle-wrapper.properties +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists 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 5aa3f50265..f268268af0 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-pact/pom.xml +++ b/spring-cloud-contract-tools/spring-cloud-contract-pact/pom.xml @@ -61,11 +61,6 @@ spring-boot-starter-test test - - info.solidsoft.spock - spock-global-unroll - test - org.springframework.cloud spring-cloud-contract-wiremock diff --git a/spring-cloud-contract-verifier/pom.xml b/spring-cloud-contract-verifier/pom.xml index 462aa4ca8c..ea86ab443c 100644 --- a/spring-cloud-contract-verifier/pom.xml +++ b/spring-cloud-contract-verifier/pom.xml @@ -178,11 +178,6 @@ spock-core test - - info.solidsoft.spock - spock-global-unroll - test - org.springframework.boot spring-boot-starter-test @@ -280,8 +275,8 @@ test - org.junit.vintage - junit-vintage-engine + org.spockframework + spock-junit4 test diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/NameProvider.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/NameProvider.java index 1dcfa55623..c242275197 100644 --- a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/NameProvider.java +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/NameProvider.java @@ -51,14 +51,14 @@ class NameProvider { else if (contractMetadata.getConvertedContract().size() > 1) { int index = findIndexOf(contractMetadata.getConvertedContract(), stubContent); String name = camelCasedMethodFromFileName(stubsFile) + "_" + index; - if (log.isDebugEnabled()) { - log.debug("Scenario found. The method name will be [" + name + "]"); + if (log.isTraceEnabled()) { + log.trace("Scenario found. The method name will be [" + name + "]"); } return name; } String name = camelCasedMethodFromFileName(stubsFile); - if (StringUtils.hasText(name) && log.isDebugEnabled()) { - log.debug("The method name will be [" + name + "]"); + if (StringUtils.hasText(name) && log.isTraceEnabled()) { + log.trace("The method name will be [" + name + "]"); } return name; } diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/file/SingleContractMetadata.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/file/SingleContractMetadata.java index 038ec9133c..f96d6a7274 100644 --- a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/file/SingleContractMetadata.java +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/file/SingleContractMetadata.java @@ -212,17 +212,17 @@ public class SingleContractMetadata { private String calculateMethodName() { if (!isEmpty(contract.getName())) { String name = camelCase(convertIllegalPackageChars(contract.getName())); - log.debug("Overriding the default test name with [{}]", name); + log.trace("Overriding the default test name with [{}]", name); return name; } if (allContracts.size() > 1) { int index = allContracts.indexOf(getContract()); String name = String.format("%s_%d", camelCasedMethodFromFileName(stubsPath), index); - log.debug("Scenario found. The method name will be [{}]", name); + log.trace("Scenario found. The method name will be [{}]", name); return name; } String name = camelCasedMethodFromFileName(stubsPath); - log.debug("The method name will be [{}]", name); + log.trace("The method name will be [{}]", name); return name; } diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientMethodBuilderSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientMethodBuilderSpec.groovy index c496ef30c2..21297a4631 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientMethodBuilderSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientMethodBuilderSpec.groovy @@ -484,7 +484,8 @@ class JaxRsClientMethodBuilderSpec extends Specification implements WireMockStub } } - def "should generate regex assertions for map objects in response body with #methodBodyName"() { + @Unroll + def "should generate regex assertions for map objects in response body with #methodBuilderName"() { given: Contract contractDsl = Contract.make { request { diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategySpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategySpec.groovy index 1492e62527..22d490a2c7 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategySpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategySpec.groovy @@ -20,6 +20,7 @@ import java.util.function.Function import groovy.json.JsonSlurper import spock.lang.Issue +import spock.lang.Shared import spock.lang.Specification import org.springframework.cloud.contract.spec.Contract @@ -95,157 +96,157 @@ class WireMockResponseStubStrategySpec extends Specification { assert body.get("double") instanceof BigDecimal } - def "should convert patterns to proper value"() { - given: - def contract = Contract.make { - request { - method(GET()) - urlPath(value(regex("/info/[0-9]"))) { - queryParameters { - parameter 'limit': $(consumer(equalTo('20')), producer(equalTo('10'))) - parameter 'offset': $(consumer(containing("20")), producer(equalTo('20'))) - parameter 'filter': 'email' - parameter 'sort': equalTo("name") - parameter 'age': $(consumer(notMatching("^\\w*\$")), producer('99')) - parameter 'name': $(consumer(matching('John.*')), producer('John.Doe')) - parameter 'email': 'bob@email.com' - parameter 'hello': $(consumer(matching('John.*')), producer(absent())) - parameter 'hello2': absent() - } - } - headers { - contentType(applicationJson()) - header([ - second: "value", third: $(anyAlphaNumeric()) - ]) - } - body([ - foo1 : $(c(regex("[0-9]")), p(1)), - foo2 : $(c(regex("[0-9]"))), - foo3 : $(anyAlphaNumeric()), - foo4 : value(regex(aDouble())), - foo5 : value(anyDouble()), - foo6 : "concrete", - duck : 123, - alpha : 'abc', - number : 123, - aBoolean : true, - date : '2017-01-01', - dateTime : '2017-01-01T01:23:45', - time : '01:02:34', - valueWithoutAMatcher: 'foo', - valueWithTypeMatch : 'string', - key : [ - 'complex.key': 'foo' - ] - ]) - bodyMatchers { - jsonPath('$.duck', byRegex("[0-9]{3}")) - jsonPath('$.duck', byEquality()) - jsonPath('$.alpha', byRegex(onlyAlphaUnicode())) - jsonPath('$.alpha', byEquality()) - jsonPath('$.number', byRegex(number())) - jsonPath('$.aBoolean', byRegex(anyBoolean())) - jsonPath('$.date', byDate()) - jsonPath('$.dateTime', byTimestamp()) - jsonPath('$.time', byTime()) - jsonPath("\$.['key'].['complex.key']", byEquality()) - } - } - response { - status(OK()) - headers { - contentType(applicationJson()) - header([ - second: "value", third: $(anyAlphaNumeric()) - ]) - } - body([ - foo1 : $(p(regex("[0-9]")), c(1)), - foo2 : $(p(regex("[0-9]"))), - foo3 : $(anyAlphaNumeric()), - foo4 : value(regex(aDouble())), - foo5 : value(anyDouble()), - foo6 : "concrete", - duck : 123, - alpha : 'abc', - number : 123, - positiveInteger : 1234567890, - negativeInteger : -1234567890, - positiveDecimalNumber: 123.4567890, - negativeDecimalNumber: -123.4567890, - aBoolean : true, - date : '2017-01-01', - dateTime : '2017-01-01T01:23:45', - time : "01:02:34", - valueWithoutAMatcher : 'foo', - valueWithTypeMatch : 'string', - valueWithMin : [ - 1, 2, 3 - ], - valueWithMax : [ - 1, 2, 3 - ], - valueWithMinMax : [ - 1, 2, 3 - ], - valueWithMinEmpty : [], - valueWithMaxEmpty : [], - key : [ - 'complex.key': 'foo' - ], - nullValue : null - ]) - bodyMatchers { - // asserts the jsonpath value against manual regex - jsonPath('$.duck', byRegex("[0-9]{3}")) - // asserts the jsonpath value against the provided value - jsonPath('$.duck', byEquality()) - // asserts the jsonpath value against some default regex - jsonPath('$.alpha', byRegex(onlyAlphaUnicode())) - jsonPath('$.alpha', byEquality()) - jsonPath('$.number', byRegex(number())) - jsonPath('$.positiveInteger', byRegex(anInteger())) - jsonPath('$.negativeInteger', byRegex(anInteger())) - jsonPath('$.positiveDecimalNumber', byRegex(aDouble())) - jsonPath('$.negativeDecimalNumber', byRegex(aDouble())) - jsonPath('$.aBoolean', byRegex(anyBoolean())) - // asserts vs inbuilt time related regex - jsonPath('$.date', byDate()) - jsonPath('$.dateTime', byTimestamp()) - jsonPath('$.time', byTime()) - // asserts that the resulting type is the same as in response body - jsonPath('$.valueWithTypeMatch', byType()) - jsonPath('$.valueWithMin', byType { - // results in verification of size of array (min 1) - minOccurrence(1) - }) - jsonPath('$.valueWithMax', byType { - // results in verification of size of array (max 3) - maxOccurrence(3) - }) - jsonPath('$.valueWithMinMax', byType { - // results in verification of size of array (min 1 & max 3) - minOccurrence(1) - maxOccurrence(3) - }) - jsonPath('$.valueWithMinEmpty', byType { - // results in verification of size of array (min 0) - minOccurrence(0) - }) - jsonPath('$.valueWithMaxEmpty', byType { - // results in verification of size of array (max 0) - maxOccurrence(0) - }) - // will execute a method `assertThatValueIsANumber` - jsonPath('$.duck', byCommand('assertThatValueIsANumber($it)')) - jsonPath("\$.['key'].['complex.key']", byEquality()) - jsonPath('$.nullValue', byNull()) - } + @Shared def patternsContract = Contract.make { + request { + method(GET()) + urlPath(value(regex("/info/[0-9]"))) { + queryParameters { + parameter 'limit': $(consumer(equalTo('20')), producer(equalTo('10'))) + parameter 'offset': $(consumer(containing("20")), producer(equalTo('20'))) + parameter 'filter': 'email' + parameter 'sort': equalTo("name") + parameter 'age': $(consumer(notMatching("^\\w*\$")), producer('99')) + parameter 'name': $(consumer(matching('John.*')), producer('John.Doe')) + parameter 'email': 'bob@email.com' + parameter 'hello': $(consumer(matching('John.*')), producer(absent())) + parameter 'hello2': absent() } } + headers { + contentType(applicationJson()) + header([ + second: "value", third: $(anyAlphaNumeric()) + ]) + } + body([ + foo1 : $(c(regex("[0-9]")), p(1)), + foo2 : $(c(regex("[0-9]"))), + foo3 : $(anyAlphaNumeric()), + foo4 : value(regex(aDouble())), + foo5 : value(anyDouble()), + foo6 : "concrete", + duck : 123, + alpha : 'abc', + number : 123, + aBoolean : true, + date : '2017-01-01', + dateTime : '2017-01-01T01:23:45', + time : '01:02:34', + valueWithoutAMatcher: 'foo', + valueWithTypeMatch : 'string', + key : [ + 'complex.key': 'foo' + ] + ]) + bodyMatchers { + jsonPath('$.duck', byRegex("[0-9]{3}")) + jsonPath('$.duck', byEquality()) + jsonPath('$.alpha', byRegex(onlyAlphaUnicode())) + jsonPath('$.alpha', byEquality()) + jsonPath('$.number', byRegex(number())) + jsonPath('$.aBoolean', byRegex(anyBoolean())) + jsonPath('$.date', byDate()) + jsonPath('$.dateTime', byTimestamp()) + jsonPath('$.time', byTime()) + jsonPath("\$.['key'].['complex.key']", byEquality()) + } + } + response { + status(OK()) + headers { + contentType(applicationJson()) + header([ + second: "value", third: $(anyAlphaNumeric()) + ]) + } + body([ + foo1 : $(p(regex("[0-9]")), c(1)), + foo2 : $(p(regex("[0-9]"))), + foo3 : $(anyAlphaNumeric()), + foo4 : value(regex(aDouble())), + foo5 : value(anyDouble()), + foo6 : "concrete", + duck : 123, + alpha : 'abc', + number : 123, + positiveInteger : 1234567890, + negativeInteger : -1234567890, + positiveDecimalNumber: 123.4567890, + negativeDecimalNumber: -123.4567890, + aBoolean : true, + date : '2017-01-01', + dateTime : '2017-01-01T01:23:45', + time : "01:02:34", + valueWithoutAMatcher : 'foo', + valueWithTypeMatch : 'string', + valueWithMin : [ + 1, 2, 3 + ], + valueWithMax : [ + 1, 2, 3 + ], + valueWithMinMax : [ + 1, 2, 3 + ], + valueWithMinEmpty : [], + valueWithMaxEmpty : [], + key : [ + 'complex.key': 'foo' + ], + nullValue : null + ]) + bodyMatchers { + // asserts the jsonpath value against manual regex + jsonPath('$.duck', byRegex("[0-9]{3}")) + // asserts the jsonpath value against the provided value + jsonPath('$.duck', byEquality()) + // asserts the jsonpath value against some default regex + jsonPath('$.alpha', byRegex(onlyAlphaUnicode())) + jsonPath('$.alpha', byEquality()) + jsonPath('$.number', byRegex(number())) + jsonPath('$.positiveInteger', byRegex(anInteger())) + jsonPath('$.negativeInteger', byRegex(anInteger())) + jsonPath('$.positiveDecimalNumber', byRegex(aDouble())) + jsonPath('$.negativeDecimalNumber', byRegex(aDouble())) + jsonPath('$.aBoolean', byRegex(anyBoolean())) + // asserts vs inbuilt time related regex + jsonPath('$.date', byDate()) + jsonPath('$.dateTime', byTimestamp()) + jsonPath('$.time', byTime()) + // asserts that the resulting type is the same as in response body + jsonPath('$.valueWithTypeMatch', byType()) + jsonPath('$.valueWithMin', byType { + // results in verification of size of array (min 1) + minOccurrence(1) + }) + jsonPath('$.valueWithMax', byType { + // results in verification of size of array (max 3) + maxOccurrence(3) + }) + jsonPath('$.valueWithMinMax', byType { + // results in verification of size of array (min 1 & max 3) + minOccurrence(1) + maxOccurrence(3) + }) + jsonPath('$.valueWithMinEmpty', byType { + // results in verification of size of array (min 0) + minOccurrence(0) + }) + jsonPath('$.valueWithMaxEmpty', byType { + // results in verification of size of array (max 0) + maxOccurrence(0) + }) + // will execute a method `assertThatValueIsANumber` + jsonPath('$.duck', byCommand('assertThatValueIsANumber($it)')) + jsonPath("\$.['key'].['complex.key']", byEquality()) + jsonPath('$.nullValue', byNull()) + } + } + } + + def "should convert patterns to proper value"() { when: - def subject = new WireMockRequestStubStrategy(contract, null) { + def subject = new WireMockRequestStubStrategy(patternsContract, null) { @Override protected ContentType contentType(SingleContractMetadata singleContractMetadata) { return ContentType.JSON @@ -255,7 +256,7 @@ class WireMockResponseStubStrategySpec extends Specification { then: noExceptionThrown() when: - def response = new WireMockResponseStubStrategy(contract, null) { + def response = new WireMockResponseStubStrategy(patternsContract, null) { @Override protected ContentType contentType(SingleContractMetadata singleContractMetadata) { return ContentType.JSON diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/util/xml/XmlToXPathsConverterSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/util/xml/XmlToXPathsConverterSpec.groovy index 73b579ba2b..7f2bf5eaa6 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/util/xml/XmlToXPathsConverterSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/util/xml/XmlToXPathsConverterSpec.groovy @@ -75,7 +75,7 @@ class XmlToXPathsConverterSpec extends Specification { } @Unroll - def "should remove elements to [#expectedValue] for xPath [#value]"() { + def "should remove elements to [#result] for xPath [#xpath]"() { given: BodyMatchers m = new BodyMatchers() m.xPath(xpath, m.byEquality()) diff --git a/tests/samples-messaging-camel/pom.xml b/tests/samples-messaging-camel/pom.xml index d8f1da6471..d2a1ae3f14 100644 --- a/tests/samples-messaging-camel/pom.xml +++ b/tests/samples-messaging-camel/pom.xml @@ -49,6 +49,11 @@ spring-boot-starter-test test + + org.spockframework + spock-junit4 + test + diff --git a/tests/spring-cloud-contract-stub-runner-amqp/pom.xml b/tests/spring-cloud-contract-stub-runner-amqp/pom.xml index bad725eb55..08ab0c9077 100644 --- a/tests/spring-cloud-contract-stub-runner-amqp/pom.xml +++ b/tests/spring-cloud-contract-stub-runner-amqp/pom.xml @@ -58,11 +58,6 @@ spring-boot-starter-web test - - info.solidsoft.spock - spock-global-unroll - test - diff --git a/tests/spring-cloud-contract-stub-runner-boot-eureka/pom.xml b/tests/spring-cloud-contract-stub-runner-boot-eureka/pom.xml index 0ee4516451..d7658920fb 100644 --- a/tests/spring-cloud-contract-stub-runner-boot-eureka/pom.xml +++ b/tests/spring-cloud-contract-stub-runner-boot-eureka/pom.xml @@ -71,11 +71,6 @@ spring-boot-starter-web test - - info.solidsoft.spock - spock-global-unroll - test - org.springframework.boot spring-boot-starter-webflux diff --git a/tests/spring-cloud-contract-stub-runner-boot-zookeeper/pom.xml b/tests/spring-cloud-contract-stub-runner-boot-zookeeper/pom.xml index 349ab99194..c1499d673c 100644 --- a/tests/spring-cloud-contract-stub-runner-boot-zookeeper/pom.xml +++ b/tests/spring-cloud-contract-stub-runner-boot-zookeeper/pom.xml @@ -57,11 +57,6 @@ spring-boot-starter-web test - - info.solidsoft.spock - spock-global-unroll - test - org.apache.curator curator-test diff --git a/tests/spring-cloud-contract-stub-runner-camel/pom.xml b/tests/spring-cloud-contract-stub-runner-camel/pom.xml index 3efa603012..dd9f674605 100644 --- a/tests/spring-cloud-contract-stub-runner-camel/pom.xml +++ b/tests/spring-cloud-contract-stub-runner-camel/pom.xml @@ -70,11 +70,6 @@ spring-boot-starter-web test - - info.solidsoft.spock - spock-global-unroll - test - diff --git a/tests/spring-cloud-contract-stub-runner-integration/pom.xml b/tests/spring-cloud-contract-stub-runner-integration/pom.xml index 3fe96f66da..eb38f9f845 100644 --- a/tests/spring-cloud-contract-stub-runner-integration/pom.xml +++ b/tests/spring-cloud-contract-stub-runner-integration/pom.xml @@ -59,11 +59,6 @@ spring-boot-starter-web test - - info.solidsoft.spock - spock-global-unroll - test - diff --git a/tests/spring-cloud-contract-stub-runner-jms/pom.xml b/tests/spring-cloud-contract-stub-runner-jms/pom.xml index 176bdbb000..993aa6673b 100644 --- a/tests/spring-cloud-contract-stub-runner-jms/pom.xml +++ b/tests/spring-cloud-contract-stub-runner-jms/pom.xml @@ -56,11 +56,6 @@ spring-boot-starter-web test - - info.solidsoft.spock - spock-global-unroll - test - diff --git a/tests/spring-cloud-contract-stub-runner-kafka/pom.xml b/tests/spring-cloud-contract-stub-runner-kafka/pom.xml index dc701384aa..f0adc01712 100644 --- a/tests/spring-cloud-contract-stub-runner-kafka/pom.xml +++ b/tests/spring-cloud-contract-stub-runner-kafka/pom.xml @@ -61,11 +61,6 @@ spring-boot-starter-web test - - info.solidsoft.spock - spock-global-unroll - test - diff --git a/tests/spring-cloud-contract-stub-runner-moco/pom.xml b/tests/spring-cloud-contract-stub-runner-moco/pom.xml index 217d7e058b..95b99a04ec 100644 --- a/tests/spring-cloud-contract-stub-runner-moco/pom.xml +++ b/tests/spring-cloud-contract-stub-runner-moco/pom.xml @@ -62,11 +62,6 @@ spring-boot-starter-web test - - info.solidsoft.spock - spock-global-unroll - test - diff --git a/tests/spring-cloud-contract-stub-runner-stream/pom.xml b/tests/spring-cloud-contract-stub-runner-stream/pom.xml index b8c3f24441..4c897ea1cd 100644 --- a/tests/spring-cloud-contract-stub-runner-stream/pom.xml +++ b/tests/spring-cloud-contract-stub-runner-stream/pom.xml @@ -59,11 +59,6 @@ spring-boot-starter-test test - - info.solidsoft.spock - spock-global-unroll - test -