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 b46be2834d..56837aae7f 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
@@ -7,9 +7,7 @@ buildscript {
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
- maven {
- url 'https://plugins.gradle.org/m2/'
- }
+ gradlePluginPortal()
}
dependencies {
classpath "com.bmuschko:gradle-nexus-plugin:2.3"
@@ -25,9 +23,7 @@ ext {
repoUser = System.getenv('REPO_USERNAME') ?: project.findProperty('REPO_USERNAME') ?: ''
repoPass = System.getenv('REPO_PASSWORD') ?: project.findProperty('REPO_PASSWORD') ?: ''
- contractVerifierGradlePluginLibsDir = "$buildDir/contractVerifier-gradle-plugin-libs"
testSystemProperties = [
- 'contract-gradle-plugin-libs-dir': contractVerifierGradlePluginLibsDir,
"WORK_OFFLINE" : gradle.startParameter.isOffline() ? 'TRUE' : 'FALSE'
]
JavaVersion javaVer = JavaVersion.current()
@@ -38,10 +34,9 @@ ext {
project.version = findProperty('verifierVersion')
apply plugin: 'groovy'
+apply plugin: "java-gradle-plugin"
apply from: "$rootDir/gradle/release.gradle"
-apply plugin: 'eclipse'
//apply plugin: "jacoco"
-apply plugin: 'checkstyle'
group = 'org.springframework.cloud'
@@ -65,8 +60,6 @@ task allInsight(type: DependencyInsightReportTask) {}
configurations {
// fixing the groovydoc issue https://stackoverflow.com/questions/20618857/gradle-task-groovydoc-failing-with-noclassdeffounderror
jansi.extendsFrom(runtime)
-
- contractVerifierGradlePluginLibs
}
dependencies {
@@ -88,8 +81,6 @@ dependencies {
}
testCompile 'info.solidsoft.spock:spock-global-unroll:0.5.0'
testCompile gradleTestKit()
- checkstyle "org.springframework.cloud:spring-cloud-build:${springCloudBuildVersion}"
-
}
task libtest() {
@@ -121,19 +112,9 @@ groovydoc {
}
dependencies {
- contractVerifierGradlePluginLibs project
jansi 'org.fusesource.jansi:jansi:1.11'
}
-task archiveContractVerifierGradlePluginLibsDependencies(type: Sync) {
- enabled = !incompatibleJdk
- from configurations.contractVerifierGradlePluginLibs.resolvedConfiguration.resolvedArtifacts.collect { it.file }
- into contractVerifierGradlePluginLibsDir
-}
-
-archiveContractVerifierGradlePluginLibsDependencies.dependsOn project.tasks.jar
-test.dependsOn archiveContractVerifierGradlePluginLibsDependencies
-
/*jacoco {
toolVersion = "0.7.7.201606060606"
}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierExtension.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierExtension.groovy
deleted file mode 100644
index 050cec815a..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierExtension.groovy
+++ /dev/null
@@ -1,616 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.contract.verifier.plugin
-
-import org.gradle.api.tasks.Internal
-
-import javax.inject.Inject
-
-import groovy.transform.CompileStatic
-import org.apache.commons.logging.Log
-import org.apache.commons.logging.LogFactory
-import org.gradle.api.file.DirectoryProperty
-import org.gradle.api.model.ObjectFactory
-import org.gradle.api.provider.ListProperty
-import org.gradle.api.provider.MapProperty
-import org.gradle.api.provider.Property
-import org.gradle.api.tasks.Input
-import org.gradle.api.tasks.Optional
-
-import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties
-import org.springframework.cloud.contract.verifier.config.TestFramework
-import org.springframework.cloud.contract.verifier.config.TestMode
-
-/**
- * @author Marcin Grzejszczak
- * @author Anatoliy Balakirev
- */
-@CompileStatic
-class ContractVerifierExtension {
-
- private static final Log log = LogFactory.getLog(ContractVerifierExtension)
-
- @Deprecated
- void setTargetFramework(TestFramework targetFramework) {
- log.warn("Please use the [testFramework] field. This one is deprecated")
- this.testFramework.set(targetFramework)
- }
-
- @Deprecated
- TestFramework getTargetFramework() {
- return getTestFramework().get()
- }
-
- /**
- * For which unit test library tests should be generated
- */
- Property testFramework
-
- /**
- * Which mechanism should be used to invoke REST calls during tests
- */
- Property testMode
-
- /**
- * Base package for generated tests
- */
- Property basePackageForTests
-
- /**
- * Class which all generated tests should extend
- */
- Property baseClassForTests
-
- /**
- * Suffix for generated test classes, like Spec or Test
- */
- Property nameSuffixForTests
-
- /**
- * Rule class that should be added to generated tests
- */
- Property ruleClassForTests
-
- /**
- * Patterns that should not be taken into account for processing
- */
- ListProperty excludedFiles
-
- /**
- * Patterns that should be taken into account for processing
- */
- ListProperty includedFiles
-
- /**
- * Patterns for which generated tests should be @Ignored
- */
- ListProperty ignoredFiles
-
- /**
- * Imports that should be added to generated tests
- */
- ListProperty imports
-
- /**
- * Static imports that should be added to generated tests
- */
- ListProperty staticImports
-
- /**
- * Directory containing contracts written using the GroovyDSL
- */
- DirectoryProperty contractsDslDir
-
- /**
- * Test source directory where tests generated from Groovy DSL should be placed
- */
- DirectoryProperty generatedTestSourcesDir
-
- /**
- * Test resource directory where tests generated from Groovy DSL should be referenced
- */
- DirectoryProperty generatedTestResourcesDir
-
- /**
- * Dir where the generated stubs from Groovy DSL should be placed.
- * You can then mention them in your packaging task to create jar with stubs
- */
- DirectoryProperty stubsOutputDir
-
- /**
- * Suffix for the generated Stubs Jar task
- */
- Property stubsSuffix
-
- /**
- * Incubating feature. You can check the size of JSON arrays. If not turned on
- * explicitly will be disabled.
- */
- Property assertJsonSize
-
- /**
- * When enabled, this flag will tell stub runner to throw an exception when no stubs /
- * contracts were found.
- */
- Property failOnNoContracts
-
- /**
- * If set to true then if any contracts that are in progress are found, will break the
- * build. On the producer side you need to be explicit about the fact that you have
- * contracts in progress and take into consideration that you might be causing false
- * positive test execution results on the consumer side.
- */
- Property failOnInProgress
-
- ContractRepository contractRepository
-
- /**
- * Dependency that contains packaged contracts
- */
- Dependency contractDependency
-
- /**
- * The path in the JAR with all the contracts where contracts for this particular service lay.
- * If not provided will be resolved to {@code groupid/artifactid}. Example:
- *
- * If {@code groupid} is {@code com.example} and {@code artifactid} is {@code service} then the resolved path will be
- * {@code /com/example/artifactid}
- */
- Property contractsPath
-
- /**
- * Picks the mode in which stubs will be found and registered
- */
- Property contractsMode
-
- /**
- * A package that contains all the base clases for generated tests. If your contract resides in a location
- * {@code src/test/resources/contracts/com/example/v1/} and you provide the {@code packageWithBaseClasses}
- * value to {@code com.example.contracts.base} then we will search for a test source file that will
- * have the package {@code com.example.contracts.base} and name {@code ExampleV1Base}. As you can see
- * it will take the two last folders to and attach {@code Base} to its name.
- */
- Property packageWithBaseClasses
-
- /**
- * A way to override any base class mappings. The keys are regular expressions on the package name
- * and the values FQN to a base class for that given expression.
- *
- * Example of a mapping
- *
- * {@code .*.com.example.v1..*} -> {@code com.example.SomeBaseClass}
- *
- * When a contract's package matches the provided regular expression then extending class will be the one
- * provided in the map - in this case {@code com.example.SomeBaseClass}
- */
- MapProperty baseClassMappings
-
- /**
- * If set to true then the {@code target} or {@code build} folders are getting
- * excluded from any operations. This is used out of the box when working with
- * common repo with contracts.
- */
- Property excludeBuildFolders
-
- /**
- * If set to {@code true} will not assert whether the downloaded stubs / contract
- * JAR was downloaded from a remote location or a local one(only applicable to Maven repos, not Git or Pact)
- *
- * @deprecated - with 2.1.0 this option is redundant
- */
- @Deprecated
- Property contractsSnapshotCheckSkip
-
- /**
- * If set to {@code false} will NOT delete stubs from a temporary
- * folder after running tests
- */
- Property deleteStubsAfterTest
-
- /**
- * If {@code true} then will convert contracts to a YAML representation
- */
- Property convertToYaml
-
- /**
- * Map of properties that can be passed to custom {@link org.springframework.cloud.contract.stubrunner.StubDownloaderBuilder}
- */
- MapProperty contractsProperties
-
- void contractDependency(@DelegatesTo(Dependency) Closure closure) {
- closure.delegate = contractDependency
- closure.call()
- }
-
- void baseClassMappings(@DelegatesTo(BaseClassMapping) Closure closure) {
- closure.delegate = new BaseClassMapping(baseClassMappings)
- closure.call()
- }
-
- void contractRepository(@DelegatesTo(ContractRepository) Closure closure) {
- closure.delegate = contractRepository
- closure.call()
- }
-
- void contractsProperties(Map map) {
- contractsProperties.set(map)
- }
-
- void setContractsProperties(Map map) {
- contractsProperties.set(map)
- }
-
- /**
- * Is set to true will not provide the default publication task
- */
- Property disableStubPublication
-
- // Added for backward compatibility only. Use setter of dedicated enum type
- @Deprecated
- void setTestMode(String testMode) {
- if (testMode != null) {
- this.testMode.set(TestMode.valueOf(testMode.toUpperCase()))
- }
- }
-
- // Added for backward compatibility only. Use setter of dedicated enum type
- @Deprecated
- void setTestFramework(String testFramework) {
- if (testFramework != null) {
- this.testFramework.set(TestFramework.valueOf(testFramework.toUpperCase()))
- }
- }
-
- // Added for backward compatibility only. Use setter of dedicated enum type
- @Deprecated
- void setContractsMode(String contractsMode) {
- if (contractsMode != null) {
- this.contractsMode.set(StubRunnerProperties.StubsMode.valueOf(contractsMode.toUpperCase()))
- }
- }
-
- void setBasePackageForTests(String basePackageForTests) {
- this.basePackageForTests.set(basePackageForTests)
- }
-
- void setBaseClassForTests(String baseClassForTests) {
- this.baseClassForTests.set(baseClassForTests)
- }
-
- void setNameSuffixForTests(String nameSuffixForTests) {
- this.nameSuffixForTests.set(nameSuffixForTests)
- }
-
- void setRuleClassForTests(String ruleClassForTests) {
- this.ruleClassForTests.set(ruleClassForTests)
- }
-
- void setContractsDslDir(String contractsDslDir) {
- this.contractsDslDir.set(new File(contractsDslDir))
- }
-
- void setGeneratedTestSourcesDir(String generatedTestSourcesDir) {
- this.generatedTestSourcesDir.set(new File(generatedTestSourcesDir))
- }
-
- void setGeneratedTestResourcesDir(String generatedTestResourcesDir) {
- this.generatedTestResourcesDir.set(new File(generatedTestResourcesDir))
- }
-
- void setStubsOutputDir(String stubsOutputDir) {
- this.stubsOutputDir.set(new File(stubsOutputDir))
- }
-
- void setStubsSuffix(String stubsSuffix) {
- this.stubsSuffix.set(stubsSuffix)
- }
-
- void setContractsPath(String contractsPath) {
- this.contractsPath.set(contractsPath)
- }
-
- void setPackageWithBaseClasses(String packageWithBaseClasses) {
- this.packageWithBaseClasses.set(packageWithBaseClasses)
- }
-
- void setBasePackageForTests(GString basePackageForTests) {
- this.basePackageForTests.set(basePackageForTests.toString())
- }
-
- void setBaseClassForTests(GString baseClassForTests) {
- this.baseClassForTests.set(baseClassForTests.toString())
- }
-
- void setNameSuffixForTests(GString nameSuffixForTests) {
- this.nameSuffixForTests.set(nameSuffixForTests.toString())
- }
-
- void setRuleClassForTests(GString ruleClassForTests) {
- this.ruleClassForTests.set(ruleClassForTests.toString())
- }
-
- void setContractsDslDir(GString contractsDslDir) {
- this.contractsDslDir.set(new File(contractsDslDir.toString()))
- }
-
- void setGeneratedTestSourcesDir(GString generatedTestSourcesDir) {
- this.generatedTestSourcesDir.set(new File(generatedTestSourcesDir.toString()))
- }
-
- void setGeneratedTestResourcesDir(GString generatedTestResourcesDir) {
- this.generatedTestResourcesDir.set(new File(generatedTestResourcesDir.toString()))
- }
-
- void setStubsOutputDir(GString stubsOutputDir) {
- this.stubsOutputDir.set(new File(stubsOutputDir.toString()))
- }
-
- void setStubsSuffix(GString stubsSuffix) {
- this.stubsSuffix.set(stubsSuffix.toString())
- }
-
- void setContractsPath(GString contractsPath) {
- this.contractsPath.set(contractsPath.toString())
- }
-
- void setPackageWithBaseClasses(GString packageWithBaseClasses) {
- this.packageWithBaseClasses.set(packageWithBaseClasses.toString())
- }
-
-
- @Inject
- ContractVerifierExtension(ObjectFactory objects) {
- this.testFramework = objects.property(TestFramework).convention(TestFramework.JUNIT)
- this.testMode = objects.property(TestMode).convention(TestMode.MOCKMVC)
- this.basePackageForTests = objects.property(String)
- this.baseClassForTests = objects.property(String)
- this.nameSuffixForTests = objects.property(String)
- this.ruleClassForTests = objects.property(String)
- this.excludedFiles = objects.listProperty(String).convention([])
- this.includedFiles = objects.listProperty(String).convention([])
- this.ignoredFiles = objects.listProperty(String).convention([])
- this.imports = objects.listProperty(String).convention([])
- this.staticImports = objects.listProperty(String).convention([])
- this.contractsDslDir = objects.directoryProperty()
- this.generatedTestSourcesDir = objects.directoryProperty()
- this.generatedTestResourcesDir = objects.directoryProperty()
- this.stubsOutputDir = objects.directoryProperty()
- this.stubsSuffix = objects.property(String).convention("stubs")
- this.assertJsonSize = objects.property(Boolean).convention(false)
- this.failOnNoContracts = objects.property(Boolean).convention(true)
- this.failOnInProgress = objects.property(Boolean).convention(true)
- this.contractRepository = new ContractRepository(objects)
- this.contractDependency = new Dependency(objects)
- this.contractsPath = objects.property(String)
- this.contractsMode = objects.property(StubRunnerProperties.StubsMode).convention(StubRunnerProperties.StubsMode.CLASSPATH)
- this.packageWithBaseClasses = objects.property(String)
- this.baseClassMappings = objects.mapProperty(String, String).convention([:])
- this.excludeBuildFolders = objects.property(Boolean).convention(false)
- this.contractsSnapshotCheckSkip = objects.property(Boolean).convention(false)
- this.deleteStubsAfterTest = objects.property(Boolean).convention(true)
- this.convertToYaml = objects.property(Boolean).convention(false)
- this.contractsProperties = objects.mapProperty(String, String).convention([:])
- this.disableStubPublication = objects.property(Boolean).convention(false)
- }
-
- static class Dependency {
- @Input
- @Optional
- Property groupId
- @Input
- @Optional
- Property artifactId
- @Input
- @Optional
- Property version
- @Input
- @Optional
- Property classifier
- @Input
- @Optional
- Property stringNotation
-
- @Inject
- Dependency(ObjectFactory objects) {
- groupId = objects.property(String)
- artifactId = objects.property(String)
- version = objects.property(String)
- classifier = objects.property(String)
- stringNotation = objects.property(String)
- }
-
- @Override
- String toString() {
- return "Dependency{" +
- "groupId=" + groupId.getOrNull() +
- ", artifactId=" + artifactId.getOrNull() +
- ", classifier=" + classifier.getOrNull() +
- ", version=" + version.getOrNull() +
- ", stringNotation=" + stringNotation.getOrNull() +
- '}'
- }
-
- void setGroupId(String groupId) {
- this.groupId.set(groupId)
- }
-
- void setArtifactId(String artifactId) {
- this.artifactId.set(artifactId)
- }
-
- void setVersion(String version) {
- this.version.set(version)
- }
-
- void setClassifier(String classifier) {
- this.classifier.set(classifier)
- }
-
- void setStringNotation(String stringNotation) {
- this.stringNotation.set(stringNotation)
- }
-
- void setGroupId(GString groupId) {
- this.groupId.set(groupId.toString())
- }
-
- void setArtifactId(GString artifactId) {
- this.artifactId.set(artifactId.toString())
- }
-
- void setVersion(GString version) {
- this.version.set(version.toString())
- }
-
- void setClassifier(GString classifier) {
- this.classifier.set(classifier.toString())
- }
-
- void setStringNotation(GString stringNotation) {
- this.stringNotation.set(stringNotation.toString())
- }
- }
-
- static class BaseClassMapping {
- private final MapProperty delegate
-
- private BaseClassMapping(MapProperty delegate) {
- this.delegate = delegate
- }
-
- void baseClassMapping(String packageRegex, String fqnBaseClass) {
- delegate.put(packageRegex, fqnBaseClass)
- }
-
- void baseClassMapping(Map mapping) {
- delegate.putAll(mapping)
- }
- }
-
- // This class is used as an input to the tasks, so all fields are marked as `@Input` to allow incremental build
- static class ContractRepository {
- @Input
- @Optional
- Property repositoryUrl
- @Input
- @Optional
- Property username
- @Input
- @Optional
- Property password
- @Input
- @Optional
- Property proxyPort
- @Input
- @Optional
- Property proxyHost
- /**
- * Not used any more, as we switched to Gradle's incremental build.
- */
- @Internal
- @Deprecated
- boolean cacheDownloadedContracts
-
- @Inject
- ContractRepository(ObjectFactory objects) {
- this.repositoryUrl = objects.property(String)
- this.username = objects.property(String)
- this.password = objects.property(String)
- this.proxyHost = objects.property(String)
- this.proxyPort = objects.property(Integer)
- }
-
- @Override
- String toString() {
- return "ContractRepository{" +
- "repositoryUrl=" + repositoryUrl.getOrNull() +
- ", username=" + username.getOrNull() +
- ", password=" + password.getOrNull() +
- ", proxyPort=" + proxyPort.getOrNull() +
- ", proxyHost=" + proxyHost.getOrNull() +
- '}'
- }
-
- void setRepositoryUrl(String repositoryUrl) {
- this.repositoryUrl.set(repositoryUrl)
- }
-
- void setUsername(String username) {
- this.username.set(username)
- }
-
- void setPassword(String password) {
- this.password.set(password)
- }
-
- void setProxyHost(String proxyHost) {
- this.proxyHost.set(proxyHost)
- }
-
- void setRepositoryUrl(GString repositoryUrl) {
- this.repositoryUrl.set(repositoryUrl.toString())
- }
-
- void setUsername(GString username) {
- this.username.set(username.toString())
- }
-
- void setPassword(GString password) {
- this.password.set(password.toString())
- }
-
- void setProxyHost(GString proxyHost) {
- this.proxyHost.set(proxyHost.toString())
- }
-
- void setProxyPort(Integer proxyPort) {
- this.proxyPort.set(proxyPort)
- }
-
- void repositoryUrl(String repositoryUrl) {
- this.repositoryUrl.set(repositoryUrl)
- }
-
- void username(String username) {
- this.username.set(username)
- }
-
- void password(String password) {
- this.password.set(password)
- }
-
- void proxyHost(String proxyHost) {
- this.proxyHost.set(proxyHost)
- }
-
- void repositoryUrl(GString repositoryUrl) {
- this.repositoryUrl.set(repositoryUrl.toString())
- }
-
- void username(GString username) {
- this.username.set(username.toString())
- }
-
- void password(GString password) {
- this.password.set(password.toString())
- }
-
- void proxyHost(GString proxyHost) {
- this.proxyHost.set(proxyHost.toString())
- }
- }
-}
\ No newline at end of file
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierExtension.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierExtension.java
new file mode 100644
index 0000000000..70737be24f
--- /dev/null
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierExtension.java
@@ -0,0 +1,791 @@
+/*
+ * Copyright 2013-2019 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.cloud.contract.verifier.plugin;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.gradle.api.Action;
+import org.gradle.api.file.DirectoryProperty;
+import org.gradle.api.file.ProjectLayout;
+import org.gradle.api.model.ObjectFactory;
+import org.gradle.api.provider.ListProperty;
+import org.gradle.api.provider.MapProperty;
+import org.gradle.api.provider.Property;
+import org.gradle.api.tasks.Input;
+import org.gradle.api.tasks.Internal;
+import org.gradle.api.tasks.Optional;
+import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
+import org.springframework.cloud.contract.verifier.config.TestFramework;
+import org.springframework.cloud.contract.verifier.config.TestMode;
+import org.springframework.util.Assert;
+
+import javax.inject.Inject;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Marcin Grzejszczak
+ * @author Anatoliy Balakirev
+ * @author Shannon Pamperl
+ */
+public class ContractVerifierExtension {
+
+ private static final Log log = LogFactory.getLog(ContractVerifierExtension.class);
+
+ /**
+ * For which unit test library tests should be generated
+ */
+ private Property testFramework;
+
+ /**
+ * Which mechanism should be used to invoke REST calls during tests
+ */
+ private Property testMode;
+
+ /**
+ * Base package for generated tests
+ */
+ private Property basePackageForTests;
+
+ /**
+ * Class which all generated tests should extend
+ */
+ private Property baseClassForTests;
+
+ /**
+ * Suffix for generated test classes, like Spec or Test
+ */
+ private Property nameSuffixForTests;
+
+ /**
+ * Rule class that should be added to generated tests
+ */
+ private Property ruleClassForTests;
+
+ /**
+ * Patterns that should not be taken into account for processing
+ */
+ private ListProperty excludedFiles;
+
+ /**
+ * Patterns that should be taken into account for processing
+ */
+ private ListProperty includedFiles;
+
+ /**
+ * Patterns for which generated tests should be @Ignored
+ */
+ private ListProperty ignoredFiles;
+
+ /**
+ * Imports that should be added to generated tests
+ */
+ private ListProperty imports;
+
+ /**
+ * Static imports that should be added to generated tests
+ */
+ private ListProperty staticImports;
+
+ /**
+ * Directory containing contracts written using the GroovyDSL
+ */
+ private DirectoryProperty contractsDslDir;
+
+ /**
+ * Test source directory where tests generated from Groovy DSL should be placed
+ */
+ private DirectoryProperty generatedTestSourcesDir;
+
+ /**
+ * Test resource directory where tests generated from Groovy DSL should be referenced
+ */
+ private DirectoryProperty generatedTestResourcesDir;
+
+ /**
+ * Dir where the generated stubs from Groovy DSL should be placed.
+ * You can then mention them in your packaging task to create jar with stubs
+ */
+ private DirectoryProperty stubsOutputDir;
+
+ /**
+ * Suffix for the generated Stubs Jar task
+ */
+ private Property stubsSuffix;
+
+ /**
+ * Incubating feature. You can check the size of JSON arrays. If not turned on
+ * explicitly will be disabled.
+ */
+ private Property assertJsonSize;
+
+ /**
+ * When enabled, this flag will tell stub runner to throw an exception when no stubs /
+ * contracts were found.
+ */
+ private Property failOnNoContracts;
+
+ /**
+ * If set to true then if any contracts that are in progress are found, will break the
+ * build. On the producer side you need to be explicit about the fact that you have
+ * contracts in progress and take into consideration that you might be causing false
+ * positive test execution results on the consumer side.
+ */
+ private Property failOnInProgress;
+
+ private ContractRepository contractRepository;
+
+ /**
+ * Dependency that contains packaged contracts
+ */
+ private Dependency contractDependency;
+
+ /**
+ * The path in the JAR with all the contracts where contracts for this particular service lay.
+ * If not provided will be resolved to {@code groupid/artifactid}. Example:
+ *
+ * If {@code groupid} is {@code com.example} and {@code artifactid} is {@code service} then the resolved path will be
+ * {@code /com/example/artifactid}
+ */
+ private Property contractsPath;
+
+ /**
+ * Picks the mode in which stubs will be found and registered
+ */
+ private Property contractsMode;
+
+ /**
+ * A package that contains all the base clases for generated tests. If your contract resides in a location
+ * {@code src/test/resources/contracts/com/example/v1/} and you provide the {@code packageWithBaseClasses}
+ * value to {@code com.example.contracts.base} then we will search for a test source file that will
+ * have the package {@code com.example.contracts.base} and name {@code ExampleV1Base}. As you can see
+ * it will take the two last folders to and attach {@code Base} to its name.
+ */
+ private Property packageWithBaseClasses;
+
+ /**
+ * A way to override any base class mappings. The keys are regular expressions on the package name
+ * and the values FQN to a base class for that given expression.
+ *
+ * Example of a mapping
+ *
+ * {@code .*.com.example.v1..*} -> {@code com.example.SomeBaseClass}
+ *
+ * When a contract's package matches the provided regular expression then extending class will be the one
+ * provided in the map - in this case {@code com.example.SomeBaseClass}
+ */
+ private BaseClassMapping baseClassMappings;
+
+ /**
+ * If set to true then the {@code target} or {@code build} folders are getting
+ * excluded from any operations. This is used out of the box when working with
+ * common repo with contracts.
+ */
+ private Property excludeBuildFolders;
+
+ /**
+ * If set to {@code true} will not assert whether the downloaded stubs / contract
+ * JAR was downloaded from a remote location or a local one(only applicable to Maven repos, not Git or Pact)
+ *
+ * @deprecated - with 2.1.0 this option is redundant
+ */
+ @Deprecated
+ private Property contractsSnapshotCheckSkip;
+
+ /**
+ * If set to {@code false} will NOT delete stubs from a temporary
+ * folder after running tests
+ */
+ private Property deleteStubsAfterTest;
+
+ /**
+ * If {@code true} then will convert contracts to a YAML representation
+ */
+ private Property convertToYaml;
+
+ /**
+ * Map of properties that can be passed to custom {@link org.springframework.cloud.contract.stubrunner.StubDownloaderBuilder}
+ */
+ private MapProperty contractsProperties;
+
+ /**
+ * Is set to true will not provide the default publication task
+ */
+ private Property disableStubPublication;
+
+ @Inject
+ public ContractVerifierExtension(ProjectLayout layout, ObjectFactory objects) {
+ this.testFramework = objects.property(TestFramework.class).convention(TestFramework.JUNIT);
+ this.testMode = objects.property(TestMode.class).convention(TestMode.MOCKMVC);
+ this.basePackageForTests = objects.property(String.class);
+ this.baseClassForTests = objects.property(String.class);
+ this.nameSuffixForTests = objects.property(String.class);
+ this.ruleClassForTests = objects.property(String.class);
+ this.excludedFiles = objects.listProperty(String.class).convention(new ArrayList<>());
+ this.includedFiles = objects.listProperty(String.class).convention(new ArrayList<>());
+ this.ignoredFiles = objects.listProperty(String.class).convention(new ArrayList<>());
+ this.imports = objects.listProperty(String.class).convention(new ArrayList<>());
+ this.staticImports = objects.listProperty(String.class).convention(new ArrayList<>());
+ this.contractsDslDir = objects.directoryProperty().convention(layout.getProjectDirectory().dir("src/test/resources/contracts"));
+ this.generatedTestSourcesDir = objects.directoryProperty().convention(layout.getBuildDirectory().dir("generated-test-sources/contracts"));
+ this.generatedTestResourcesDir = objects.directoryProperty().convention(layout.getBuildDirectory().dir("generated-test-resources/contracts"));
+ this.stubsOutputDir = objects.directoryProperty().convention(layout.getBuildDirectory().dir("stubs"));
+ this.stubsSuffix = objects.property(String.class).convention("stubs");
+ this.assertJsonSize = objects.property(Boolean.class).convention(false);
+ this.failOnNoContracts = objects.property(Boolean.class).convention(true);
+ this.failOnInProgress = objects.property(Boolean.class).convention(true);
+ this.contractRepository = objects.newInstance(ContractRepository.class);
+ this.contractDependency = objects.newInstance(Dependency.class);
+ this.contractsPath = objects.property(String.class);
+ this.contractsMode = objects.property(StubRunnerProperties.StubsMode.class).convention(StubRunnerProperties.StubsMode.CLASSPATH);
+ this.packageWithBaseClasses = objects.property(String.class);
+ this.baseClassMappings = objects.newInstance(BaseClassMapping.class);
+ this.excludeBuildFolders = objects.property(Boolean.class).convention(false);
+ this.contractsSnapshotCheckSkip = objects.property(Boolean.class).convention(false);
+ this.deleteStubsAfterTest = objects.property(Boolean.class).convention(true);
+ this.convertToYaml = objects.property(Boolean.class).convention(false);
+ this.contractsProperties = objects.mapProperty(String.class, String.class).convention(new HashMap<>());
+ this.disableStubPublication = objects.property(Boolean.class).convention(false);
+ }
+
+ @Deprecated
+ public void setTargetFramework(TestFramework targetFramework) {
+ log.warn("Please use the [testFramework] field. This one is deprecated");
+ this.testFramework.set(targetFramework);
+ }
+
+ @Deprecated
+ public TestFramework getTargetFramework() {
+ return getTestFramework().get();
+ }
+
+ public Property getTestFramework() {
+ return testFramework;
+ }
+
+ public void setTestFramework(TestFramework testFramework) {
+ this.testFramework.set(testFramework);
+ }
+
+ public void setTestFramework(String testFramework) {
+ if (testFramework != null) {
+ this.testFramework.set(TestFramework.valueOf(testFramework.toUpperCase()));
+ }
+ }
+
+ public Property getTestMode() {
+ return testMode;
+ }
+
+ public void setTestMode(TestMode testMode) {
+ this.testMode.set(testMode);
+ }
+
+ public void setTestMode(String testMode) {
+ if (testMode != null) {
+ this.testMode.set(TestMode.valueOf(testMode.toUpperCase()));
+ }
+ }
+
+ public Property getBasePackageForTests() {
+ return basePackageForTests;
+ }
+
+ public void setBasePackageForTests(String basePackageForTests) {
+ this.basePackageForTests.set(basePackageForTests);
+ }
+
+ public Property getBaseClassForTests() {
+ return baseClassForTests;
+ }
+
+ public void setBaseClassForTests(String baseClassForTests) {
+ this.baseClassForTests.set(baseClassForTests);
+ }
+
+ public Property getNameSuffixForTests() {
+ return nameSuffixForTests;
+ }
+
+ public void setNameSuffixForTests(String nameSuffixForTests) {
+ this.nameSuffixForTests.set(nameSuffixForTests);
+ }
+
+ public Property getRuleClassForTests() {
+ return ruleClassForTests;
+ }
+
+ public void setRuleClassForTests(String ruleClassForTests) {
+ this.ruleClassForTests.set(ruleClassForTests);
+ }
+
+ public ListProperty getExcludedFiles() {
+ return excludedFiles;
+ }
+
+ public void setExcludedFiles(List excludedFiles) {
+ this.excludedFiles.set(excludedFiles);
+ }
+
+ public ListProperty getIncludedFiles() {
+ return includedFiles;
+ }
+
+ public void setIncludedFiles(List includedFiles) {
+ this.includedFiles.set(includedFiles);
+ }
+
+ public ListProperty getIgnoredFiles() {
+ return ignoredFiles;
+ }
+
+ public void setIgnoredFiles(List ignoredFiles) {
+ this.ignoredFiles.set(ignoredFiles);
+ }
+
+ public ListProperty getImports() {
+ return imports;
+ }
+
+ public void setImports(String[] imports) {
+ this.imports.set(new ArrayList<>(Arrays.asList(imports)));
+ }
+
+ public void setInputs(List imports) {
+ this.imports.set(imports);
+ }
+
+ public ListProperty getStaticImports() {
+ return staticImports;
+ }
+
+ public void setStaticImports(String[] staticImports) {
+ this.staticImports.set(new ArrayList<>(Arrays.asList(staticImports)));
+ }
+
+ public void setStaticImports(List staticImports) {
+ this.staticImports.set(staticImports);
+ }
+
+ public DirectoryProperty getContractsDslDir() {
+ return contractsDslDir;
+ }
+
+ public void setContractsDslDir(File contractsDslDir) {
+ this.contractsDslDir.set(contractsDslDir);
+ }
+
+ public DirectoryProperty getGeneratedTestSourcesDir() {
+ return generatedTestSourcesDir;
+ }
+
+ public void setGeneratedTestSourcesDir(File generatedTestSourcesDir) {
+ this.generatedTestSourcesDir.set(generatedTestSourcesDir);
+ }
+
+ public DirectoryProperty getGeneratedTestResourcesDir() {
+ return generatedTestResourcesDir;
+ }
+
+ public void setGeneratedTestResourcesDir(File generatedTestResourcesDir) {
+ this.generatedTestResourcesDir.set(generatedTestResourcesDir);
+ }
+
+ public DirectoryProperty getStubsOutputDir() {
+ return stubsOutputDir;
+ }
+
+ public void setStubsOutputDir(File stubsOutputDir) {
+ this.stubsOutputDir.set(stubsOutputDir);
+ }
+
+ public Property getStubsSuffix() {
+ return stubsSuffix;
+ }
+
+ public void setStubsSuffix(String stubsSuffix) {
+ this.stubsSuffix.set(stubsSuffix);
+ }
+
+ public Property getAssertJsonSize() {
+ return assertJsonSize;
+ }
+
+ public void setAssertJsonSize(boolean assertJsonSize) {
+ this.assertJsonSize.set(assertJsonSize);
+ }
+
+ public Property getFailOnNoContracts() {
+ return failOnNoContracts;
+ }
+
+ public void setFailOnNoContracts(boolean failOnNoContracts) {
+ this.failOnNoContracts.set(failOnNoContracts);
+ }
+
+ public Property getFailOnInProgress() {
+ return failOnInProgress;
+ }
+
+ public void setFailOnInProgress(boolean failOnInProgress) {
+ this.failOnInProgress.set(failOnInProgress);
+ }
+
+ public ContractRepository getContractRepository() {
+ return contractRepository;
+ }
+
+ public void contractRepository(Action action) {
+ action.execute(contractRepository);
+ }
+
+ public Dependency getContractDependency() {
+ return contractDependency;
+ }
+
+ public void contractDependency(Action action) {
+ action.execute(contractDependency);
+ }
+
+ public Property getContractsPath() {
+ return contractsPath;
+ }
+
+ public void setContractsPath(String contractsPath) {
+ this.contractsPath.set(contractsPath);
+ }
+
+ public Property getContractsMode() {
+ return contractsMode;
+ }
+
+ public void setContractsMode(StubRunnerProperties.StubsMode contractsMode) {
+ this.contractsMode.set(contractsMode);
+ }
+
+ public void setContractsMode(String contractsMode) {
+ if (contractsMode != null) {
+ this.contractsMode.set(StubRunnerProperties.StubsMode.valueOf(contractsMode.toUpperCase()));
+ }
+ }
+
+ public Property getPackageWithBaseClasses() {
+ return packageWithBaseClasses;
+ }
+
+ public void setPackageWithBaseClasses(String packageWithBaseClasses) {
+ this.packageWithBaseClasses.set(packageWithBaseClasses);
+ }
+
+ public BaseClassMapping getBaseClassMappings() {
+ return baseClassMappings;
+ }
+
+ public void setBaseClassMappings(Map baseClassMappings) {
+ this.baseClassMappings.getBaseClassMappings().set(baseClassMappings);
+ }
+
+ public void baseClassMappings(Action action) {
+ action.execute(baseClassMappings);
+ }
+
+ public Property getExcludeBuildFolders() {
+ return excludeBuildFolders;
+ }
+
+ public void setExcludeBuildFolders(boolean excludeBuildFolders) {
+ this.excludeBuildFolders.set(excludeBuildFolders);
+ }
+
+ public Property getContractsSnapshotCheckSkip() {
+ return contractsSnapshotCheckSkip;
+ }
+
+ public void setContractsSnapshotCheckSkip(boolean contractsSnapshotCheckSkip) {
+ this.contractsSnapshotCheckSkip.set(contractsSnapshotCheckSkip);
+ }
+
+ public Property getDeleteStubsAfterTest() {
+ return deleteStubsAfterTest;
+ }
+
+ public void setDeleteStubsAfterTest(boolean deleteStubsAfterTest) {
+ this.deleteStubsAfterTest.set(deleteStubsAfterTest);
+ }
+
+ public Property getConvertToYaml() {
+ return convertToYaml;
+ }
+
+ public void setConvertToYaml(boolean convertToYaml) {
+ this.convertToYaml.set(convertToYaml);
+ }
+
+ public MapProperty getContractsProperties() {
+ return contractsProperties;
+ }
+
+ public void setContractsProperties(Map contractsProperties) {
+ this.contractsProperties.set(contractsProperties);
+ }
+
+ // use standard setter instead
+ @Deprecated
+ public void contractsProperties(Map map) {
+ contractsProperties.set(map);
+ }
+
+ public Property getDisableStubPublication() {
+ return disableStubPublication;
+ }
+
+ public void setDisableStubPublication(boolean disableStubPublication) {
+ this.disableStubPublication.set(disableStubPublication);
+ }
+
+ public static class Dependency {
+ private Property groupId;
+ private Property artifactId;
+ private Property version;
+ private Property classifier;
+ private Property stringNotation;
+
+ @Inject
+ public Dependency(ObjectFactory objects) {
+ groupId = objects.property(String.class);
+ artifactId = objects.property(String.class);
+ version = objects.property(String.class);
+ classifier = objects.property(String.class);
+ stringNotation = objects.property(String.class);
+ }
+
+ @Input
+ @Optional
+ public Property getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(String groupId) {
+ this.groupId.set(groupId);
+ }
+
+ @Input
+ @Optional
+ public Property getArtifactId() {
+ return artifactId;
+ }
+
+ public void setArtifactId(String artifactId) {
+ this.artifactId.set(artifactId);
+ }
+
+ @Input
+ @Optional
+ public Property getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version.set(version);
+ }
+
+ @Input
+ @Optional
+ public Property getClassifier() {
+ return classifier;
+ }
+
+ public void setClassifier(String classifier) {
+ this.classifier.set(classifier);
+ }
+
+ @Input
+ @Optional
+ public Property getStringNotation() {
+ return stringNotation;
+ }
+
+ public void setStringNotation(String stringNotation) {
+ this.stringNotation.set(stringNotation);
+ }
+
+ @Override
+ public String toString() {
+ return "Dependency{" +
+ "groupId=" + groupId.getOrNull() +
+ ", artifactId=" + artifactId.getOrNull() +
+ ", classifier=" + classifier.getOrNull() +
+ ", version=" + version.getOrNull() +
+ ", stringNotation=" + stringNotation.getOrNull() +
+ '}';
+ }
+ }
+
+ public static class BaseClassMapping {
+ private final MapProperty baseClassMappings;
+
+ @Inject
+ public BaseClassMapping(ObjectFactory objects) {
+ this.baseClassMappings = objects.mapProperty(String.class, String.class).convention(new HashMap<>());
+ }
+
+ public MapProperty getBaseClassMappings() {
+ return baseClassMappings;
+ }
+
+ public void baseClassMapping(String packageRegex, String fqnBaseClass) {
+ baseClassMappings.put(packageRegex, fqnBaseClass);
+ }
+
+ public void baseClassMapping(Map mapping) {
+ baseClassMappings.putAll(mapping);
+ }
+ }
+
+ // This class is used as an input to the tasks, so all fields are marked as `@Input` to allow incremental build
+ public static class ContractRepository {
+ private Property repositoryUrl;
+ private Property username;
+ private Property password;
+ private Property proxyPort;
+ private Property proxyHost;
+ /**
+ * If set to true then will cache the folder where non snapshot contract artifacts got downloaded.
+ *
+ * Not used any more, as we switched to Gradle's incremental build.
+ */
+ private Property cacheDownloadedContracts;
+
+ @Inject
+ public ContractRepository(ObjectFactory objects) {
+ this.repositoryUrl = objects.property(String.class);
+ this.username = objects.property(String.class);
+ this.password = objects.property(String.class);
+ this.proxyHost = objects.property(String.class);
+ this.proxyPort = objects.property(Integer.class);
+ this.cacheDownloadedContracts = objects.property(Boolean.class).convention(true);
+ }
+
+ @Input
+ @Optional
+ public Property getRepositoryUrl() {
+ return repositoryUrl;
+ }
+
+ public void setRepositoryUrl(String repositoryUrl) {
+ this.repositoryUrl.set(repositoryUrl);
+ }
+
+ // favor property assignment
+ @Deprecated
+ public void repositoryUrl(String repositoryUrl) {
+ this.repositoryUrl.set(repositoryUrl);
+ }
+
+ @Input
+ @Optional
+ public Property getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username.set(username);
+ }
+
+ // favor property assignment
+ @Deprecated
+ public void username(String username) {
+ this.username.set(username);
+ }
+
+ @Input
+ @Optional
+ public Property getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password.set(password);
+ }
+
+ // favor property assignment
+ @Deprecated
+ public void password(String password) {
+ this.password.set(password);
+ }
+
+ @Input
+ @Optional
+ public Property getProxyHost() {
+ return proxyHost;
+ }
+
+ public void setProxyHost(String proxyHost) {
+ this.proxyHost.set(proxyHost);
+ }
+
+ // favor property assignment
+ @Deprecated
+ public void proxyHost(String proxyHost) {
+ this.proxyHost.set(proxyHost);
+ }
+
+ @Input
+ @Optional
+ public Property getProxyPort() {
+ return proxyPort;
+ }
+
+ // favor unwrapped int
+ @Deprecated
+ public void setProxyPort(Integer proxyPort) {
+ this.proxyPort.set(proxyPort);
+ }
+
+ public void setProxyPort(int proxyPort) {
+ Assert.state(0 < proxyPort && proxyPort <= 65536, "Proxy port should be between 1 and 65536");
+ this.proxyPort.set(proxyPort);
+ }
+
+ @Internal
+ @Deprecated
+ public Property getCacheDownloadedContracts() {
+ return cacheDownloadedContracts;
+ }
+
+ @Deprecated
+ public void setCacheDownloadedContracts(boolean cacheDownloadedContracts) {
+ this.cacheDownloadedContracts.set(cacheDownloadedContracts);
+ }
+
+ @Override
+ public String toString() {
+ return "ContractRepository{" +
+ "repositoryUrl=" + repositoryUrl.getOrNull() +
+ ", username=" + username.getOrNull() +
+ ", password=" + password.getOrNull() +
+ ", proxyPort=" + proxyPort.getOrNull() +
+ ", proxyHost=" + proxyHost.getOrNull() +
+ ", cacheDownloadedContracts=" + cacheDownloadedContracts.get() +
+ '}';
+ }
+ }
+}
\ No newline at end of file
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GenerateServerTestsTask.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GenerateServerTestsTask.groovy
index 5085546c5f..c18eadaf43 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GenerateServerTestsTask.groovy
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GenerateServerTestsTask.groovy
@@ -151,7 +151,7 @@ class GenerateServerTestsTask extends DefaultTask {
staticImports: extension.staticImports,
testMode: extension.testMode,
testFramework: extension.testFramework,
- baseClassMappings: extension.baseClassMappings,
+ baseClassMappings: extension.baseClassMappings.getBaseClassMappings(),
assertJsonSize: extension.assertJsonSize,
failOnInProgress: extension.failOnInProgress,
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy
index 16b23e1ed5..32025e9c82 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy
@@ -55,7 +55,6 @@ class SpringCloudContractVerifierGradlePlugin implements Plugin {
this.project = project
project.plugins.apply(GroovyPlugin)
ContractVerifierExtension extension = project.extensions.create(EXTENSION_NAME, ContractVerifierExtension)
- setConfigurationDefaults(extension)
TaskProvider copyContracts = createAndConfigureCopyContractsTask(extension)
TaskProvider generateClientStubs = createAndConfigureGenerateClientStubs(extension, copyContracts)
@@ -101,16 +100,6 @@ class SpringCloudContractVerifierGradlePlugin implements Plugin {
}
}
- private void setConfigurationDefaults(ContractVerifierExtension extension) {
- extension.with {
- it.contractsDslDir.convention(project.layout.projectDirectory.dir("src/test/resources/contracts"))
- it.generatedTestSourcesDir.convention(project.layout.getBuildDirectory().dir("generated-test-sources/contracts"))
- it.generatedTestResourcesDir.convention(project.layout.getBuildDirectory().dir("generated-test-resources/contracts"))
- it.stubsOutputDir.convention(project.layout.getBuildDirectory().dir("stubs"))
- }
- }
-
-
private void createGenerateTestsTask(ContractVerifierExtension extension, TaskProvider copyContracts) {
TaskProvider task = project.tasks.register(GenerateServerTestsTask.TASK_NAME, GenerateServerTestsTask)
task.configure {
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierIntegrationSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierIntegrationSpec.groovy
index 880b733a43..05ce181641 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierIntegrationSpec.groovy
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierIntegrationSpec.groovy
@@ -51,18 +51,6 @@ abstract class ContractVerifierIntegrationSpec extends Specification {
protected void setupForProject(String projectRoot) {
copyResourcesToRoot(projectRoot)
- String gradlePluginSysProp = System.getProperty("contract-gradle-plugin-libs-dir")
- String gradlePluginLibsDir = (gradlePluginSysProp ?: new File("build/").absolutePath.toString()).replace('\\', '\\\\')
-
- buildFile.write """
- buildscript {
- dependencies {
- classpath fileTree(dir: '$gradlePluginLibsDir', include: '*.jar')
- }
- }
- """ + buildFile.text
- // Extending buildscript is required when 'apply' is used.
- // 'GradleRunner#withPluginClasspath' can be used when plugin is added using 'plugins { id...'
}
protected void switchToJunitTestFramework() {
@@ -105,7 +93,8 @@ abstract class ContractVerifierIntegrationSpec extends Specification {
return GradleRunner.create()
.withProjectDir(testProjectDir)
.withArguments(tasks)
- .withDebug(true)
+ .withPluginClasspath()
+// .withDebug(true)
.forwardOutput()
.build()
}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierKotlinIntegrationSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierKotlinIntegrationSpec.groovy
new file mode 100644
index 0000000000..52d95225ad
--- /dev/null
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierKotlinIntegrationSpec.groovy
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2013-2019 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.cloud.contract.verifier.plugin
+
+import java.nio.file.Files
+import java.nio.file.Path
+
+import static java.nio.charset.StandardCharsets.UTF_8
+
+abstract class ContractVerifierKotlinIntegrationSpec extends ContractVerifierIntegrationSpec {
+ public static final String SPOCK = "testFramework.set(TestFramework.SPOCK)"
+ public static final String JUNIT = "testFramework.set(TestFramework.JUNIT)"
+
+ @Override
+ protected File getBuildFile() {
+ return new File(testProjectDir, 'build.gradle.kts')
+ }
+
+ @Override
+ protected void switchToJunitTestFramework(String from, String to) {
+ Path path = buildFile.toPath()
+ String content = new StringBuilder(new String(Files.readAllBytes(path), UTF_8)).replaceAll(SPOCK, JUNIT)
+ .replaceAll(from, to)
+ Files.write(path, content.getBytes(UTF_8))
+ }
+}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierSpec.groovy
index 58064d307d..626da379fe 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierSpec.groovy
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierSpec.groovy
@@ -1,5 +1,7 @@
package org.springframework.cloud.contract.verifier.plugin
+import org.gradle.api.Project
+import org.gradle.api.file.ProjectLayout
import org.gradle.api.internal.project.DefaultProject
import org.gradle.api.model.ObjectFactory
import org.gradle.api.plugins.GroovyPlugin
@@ -89,16 +91,16 @@ class ContractVerifierSpec extends Specification {
def "should compile"() {
given:
- ObjectFactory objectFactory = Stub(ObjectFactory)
- ContractVerifierExtension extension = new ContractVerifierExtension(objectFactory)
+ project.plugins.apply(SpringCloudContractVerifierGradlePlugin)
+ ContractVerifierExtension extension = project.getExtensions().findByType(ContractVerifierExtension)
extension.with {
// tag::package_with_base_classes[]
- packageWithBaseClasses.set('com.example.base')
+ packageWithBaseClasses = 'com.example.base'
// end::package_with_base_classes[]
// tag::base_class_mappings[]
- baseClassForTests.set("com.example.FooBase")
+ baseClassForTests = "com.example.FooBase"
baseClassMappings {
baseClassMapping('.*/com/.*', 'com.example.ComBase')
baseClassMapping('.*/bar/.*': 'com.example.BarBase')
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/SampleProjectSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/SampleProjectSpec.groovy
deleted file mode 100755
index dae3cb595f..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/SampleProjectSpec.groovy
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.contract.verifier.plugin
-
-import org.gradle.testkit.runner.BuildResult
-import org.junit.Ignore
-import spock.lang.Stepwise
-
-import static org.gradle.testkit.runner.TaskOutcome.UP_TO_DATE
-
-@Stepwise
-@Ignore
-class SampleProjectSpec extends ContractVerifierIntegrationSpec {
-
- def setup() {
- setupForProject("functionalTest/sampleProject")
- runTasksSuccessfully('clean')
- //delete accidental output when previously importing SimpleBoot into Idea to tweak it
- }
-
- def "should pass basic flow for Spock"() {
- given:
- assert fileExists('build.gradle')
- when:
- String[] args = ["check", "publishToMavenLocal", "--debug"] as String[]
- if (WORK_OFFLINE) {
- args << "--offline"
- }
- runTasksSuccessfully(args)
- then:
- jarContainsContractVerifierContracts('fraudDetectionService/build/libs')
- when: "running generation without change inputs"
- BuildResult secondExecutionResult = runTasksSuccessfully()
- then: "tasks should be up-to-date"
- validateTasksOutcome(secondExecutionResult, UP_TO_DATE, 'generateClientStubs', 'generateContractTests', 'copyContracts')
-
- }
-
- def "should pass basic flow for JUnit"() {
- given:
- switchToJunitTestFramework()
- assert fileExists('build.gradle')
- when:
- runTasksSuccessfully(checkAndPublishToMavenLocal())
- then:
- jarContainsContractVerifierContracts('fraudDetectionService/build/libs')
- when: "running generation without change inputs"
- BuildResult secondExecutionResult = runTasksSuccessfully()
- then: "tasks should be up-to-date"
- validateTasksOutcome(secondExecutionResult, UP_TO_DATE, 'generateClientStubs', 'generateContractTests', 'copyContracts')
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/SampleJerseyProjectSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ScenarioProjectKotlinSpec.groovy
old mode 100755
new mode 100644
similarity index 59%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/SampleJerseyProjectSpec.groovy
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ScenarioProjectKotlinSpec.groovy
index c8f2785824..64d6f8bda3
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/SampleJerseyProjectSpec.groovy
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/ScenarioProjectKotlinSpec.groovy
@@ -16,46 +16,32 @@
package org.springframework.cloud.contract.verifier.plugin
-import org.gradle.testkit.runner.BuildResult
import spock.lang.Stepwise
-import spock.lang.Ignore
@Stepwise
-@Ignore("Flaky")
-class SampleJerseyProjectSpec extends ContractVerifierIntegrationSpec {
+class ScenarioProjectKotlinSpec extends ContractVerifierKotlinIntegrationSpec {
def setup() {
- setupForProject("functionalTest/sampleJerseyProject")
+ setupForProject("functionalTest/scenarioProjectKotlin")
runTasksSuccessfully('clean')
//delete accidental output when previously importing SimpleBoot into Idea to tweak it
}
def "should pass basic flow for Spock"() {
given:
- assert fileExists('build.gradle')
- expect:
- BuildResult result = runTasksSuccessfully(checkAndPublishToMavenLocal())
- jarContainsContractVerifierContracts('fraudDetectionService/build/libs')
- !result.output.contains("You've switched off the stub publication")
- }
-
- def "should pass basic flow for Spock with disabled publication"() {
- given:
- assert fileExists('build.gradle')
- expect:
- String[] args = (checkAndPublishToMavenLocal().toList() << "-PdisablePublication") as String[]
- BuildResult result = runTasksSuccessfully(args)
- !fileExists('fraudDetectionService/build/libs')
- result.output.contains("You've switched off the stub publication")
- }
-
- def "should pass basic flow for JUnit"() {
- given:
- switchToJunitTestFramework()
- assert fileExists('build.gradle')
+ assert fileExists('build.gradle.kts')
expect:
runTasksSuccessfully(checkAndPublishToMavenLocal())
jarContainsContractVerifierContracts('fraudDetectionService/build/libs')
}
+ def "should pass basic flow for JUnit"() {
+ given:
+ assert fileExists('build.gradle.kts')
+ expect:
+ switchToJunitTestFramework()
+ runTasksSuccessfully(checkAndPublishToMavenLocal())
+ jarContainsContractVerifierContracts('fraudDetectionService/build/libs')
+ }
+
}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/build.gradle b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/build.gradle
deleted file mode 100644
index ae57b5ca31..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/build.gradle
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-buildscript {
- repositories {
- mavenLocal()
- mavenCentral()
- maven { url "https://repo.spring.io/snapshot" }
- maven { url "https://repo.spring.io/milestone" }
- maven { url "https://repo.spring.io/release" }
- }
- dependencies {
- classpath("org.springframework.boot:spring-boot-gradle-plugin:${bootVersion}")
- }
-}
-
-apply plugin: 'checkstyle'
-
-allprojects {
- group = 'com.example.jersey'
-}
-
-ext {
- spockVersion = '1.0-groovy-2.4'
-
- contractVerifierStubsBaseDirectory = 'src/test/resources/stubs'
-}
-
-subprojects {
- apply plugin: 'groovy'
-
- sourceCompatibility = 1.8
- targetCompatibility = 1.8
-
- repositories {
- mavenCentral()
- mavenLocal()
- maven { url "https://repo.spring.io/snapshot" }
- maven { url "https://repo.spring.io/milestone" }
- maven { url "https://repo.spring.io/release" }
- }
-
- dependencies {
- testCompile "org.codehaus.groovy:groovy"
- testCompile("org.spockframework:spock-core:$spockVersion") {
- exclude(group: 'org.codehaus.groovy')
- }
- testCompile 'junit:junit:4.12'
- testCompile "com.github.tomakehurst:wiremock:${wiremockVersion}"
- testCompile "com.toomuchcoding.jsonassert:jsonassert:${jsonAssertVersion}"
- testCompile "org.springframework.cloud:spring-cloud-contract-verifier:${verifierVersion}"
- }
-}
-
-configure([project(':fraudDetectionService'), project(':loanApplicationService')]) {
- apply plugin: 'org.springframework.boot'
- apply plugin: 'io.spring.dependency-management'
- apply plugin: 'maven-publish'
-
- jar {
- version = '0.0.1'
- }
-
- bootJar {
- enabled = false
- }
-
- configurations {
- compile.exclude module: "spring-boot-starter-tomcat"
- }
-
- dependencies {
- compile 'org.springframework.boot:spring-boot-starter-jersey'
- compile 'org.springframework.boot:spring-boot-starter-jetty'
-
- testRuntime("org.spockframework:spock-spring:$spockVersion") {
- exclude(group: 'org.codehaus.groovy')
- }
-
- testCompile "org.mockito:mockito-core"
- testCompile "org.springframework:spring-test"
- testCompile "org.springframework.boot:spring-boot-test"
- testCompile("com.github.tomakehurst:wiremock:${wiremockVersion}") {
- exclude group: 'org.eclipse.jetty'
- }
- }
-
- task cleanup(type: Delete) {
- delete 'src/test/resources/mappings', 'src/test/resources/stubs'
- }
-
- clean.dependsOn('cleanup')
-
- test {
- testLogging {
- exceptionFormat = 'full'
- }
- }
-
-}
-
-configure(project(':fraudDetectionService')) {
- test.dependsOn('generateClientStubs')
-
- apply plugin: 'spring-cloud-contract'
-
- ext {
- contractsDir = file("mappings")
- stubsOutputDirRoot = file("${project.buildDir}/production/${project.name}-stubs/")
- }
-
- tasks.create(type: Jar, name: 'verifierStubsJar', dependsOn: 'generateClientStubs') {
- baseName = project.name
- classifier = contracts.stubsSuffix
- from ext.stubsOutputDir
- }
-
- contracts {
- contractsMode = "REMOTE"
- testFramework = 'Spock'
- testMode = 'JaxRsClient'
- baseClassForTests = 'org.springframework.cloud.MvcSpec'
- contractDependency {
- stringNotation("com.example:jersey-contracts:+:")
- }
- contractRepository {
- repositoryUrl = "file://" + file("${project.rootDir.absolutePath}/m2repo/repository").absolutePath
- }
- generatedTestSourcesDir = file("${project.buildDir}/generated-test-sources/")
- stubsOutputDir = stubsOutputDirRoot
- disableStubPublication(project.hasProperty("disablePublication"))
- }
-}
-
-configure(project(':loanApplicationService')) {
-
- task copyCollaboratorStubs(type: Copy) {
- File fraudBuildDir = project(':fraudDetectionService').buildDir
- from(new File(fraudBuildDir, "/production/${project(':fraudDetectionService').name}-stubs/")) {
- include '**/*.json'
- }
- into "src/test/resources/mappings"
- }
-
- test.dependsOn('copyCollaboratorStubs')
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/FraudDetectionController.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/FraudDetectionController.java
deleted file mode 100644
index 858ebcf143..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/FraudDetectionController.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection;
-
-import java.math.BigDecimal;
-
-import org.springframework.cloud.frauddetection.model.FraudCheck;
-import org.springframework.cloud.frauddetection.model.FraudCheckResult;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestBody;
-
-import static org.springframework.cloud.frauddetection.model.FraudCheckStatus.FRAUD;
-import static org.springframework.cloud.frauddetection.model.FraudCheckStatus.OK;
-
-@Controller
-@Path("/")
-public class FraudDetectionController {
-
- private static final String FRAUD_SERVICE_JSON_VERSION_1 = "application/vnd.fraud.v1+json";
-
- private static final String NO_REASON = null;
-
- private static final String AMOUNT_TOO_HIGH = "Amount too high";
-
- private static final BigDecimal MAX_AMOUNT = new BigDecimal("5000");
-
- @PUT
- @Path("/fraudcheck")
- @Produces(FRAUD_SERVICE_JSON_VERSION_1)
- @Consumes(FRAUD_SERVICE_JSON_VERSION_1)
- public FraudCheckResult fraudCheck(
- @RequestBody(required = false) FraudCheck fraudCheck) {
- if (amountGreaterThanThreshold(fraudCheck)) {
- return new FraudCheckResult(FRAUD, AMOUNT_TOO_HIGH);
- }
- return new FraudCheckResult(OK, NO_REASON);
- }
-
- @GET
- @Path("/frauds/name")
- public String cookie(@CookieParam("name") Cookie name,
- @CookieParam("name2") Cookie name2) {
- return name.getValue() + " " + name2.getValue();
- }
-
- private boolean amountGreaterThanThreshold(FraudCheck fraudCheck) {
- return MAX_AMOUNT.compareTo(fraudCheck.getLoanAmount()) < 0;
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/test/groovy/org/springframework/cloud/MvcSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/test/groovy/org/springframework/cloud/MvcSpec.groovy
deleted file mode 100644
index 9a0dedb42b..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/test/groovy/org/springframework/cloud/MvcSpec.groovy
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud
-
-import javax.ws.rs.client.Client
-import javax.ws.rs.client.ClientBuilder
-import javax.ws.rs.client.WebTarget
-import javax.ws.rs.core.UriBuilder
-
-import org.eclipse.jetty.server.Server
-import org.eclipse.jetty.servlet.ServletContextHandler
-import org.eclipse.jetty.servlet.ServletHolder
-import org.glassfish.jersey.client.ClientConfig
-import spock.lang.Shared
-import spock.lang.Specification
-
-import org.springframework.cloud.frauddetection.FraudDetectionController
-
-import static org.springframework.util.SocketUtils.findAvailableTcpPort
-
-abstract class MvcSpec extends Specification {
-
- @Shared
- WebTarget webTarget
-
- @Shared
- private Server server
-
- @Shared
- private Client client
-
- def setupSpec() {
- int port = findAvailableTcpPort(8000)
- URI baseUri = UriBuilder.fromUri("http://localhost").port(port).build()
- // Create Server
- Server server = new Server(port)
- // Configure ServletContextHandler
- ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS)
- context.setContextPath("/")
- server.setHandler(context)
- // Create Servlet Container
- ServletHolder jerseyServlet = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class, "/*")
- jerseyServlet.setInitOrder(0)
- // Tells the Jersey Servlet which REST service/class to load.
- jerseyServlet.setInitParameter("jersey.config.server.provider.classnames", FraudDetectionController.class.getCanonicalName())
- // Start the server
- server.start()
- ClientConfig clientConfig = new ClientConfig()
- client = ClientBuilder.newClient(clientConfig)
- webTarget = client.target(baseUri)
- }
-
- def cleanupSpec() {
- client?.close()
- server?.stop()
- }
-
- void assertThatRejectionReasonIsNull(def rejectionReason) {
- assert !rejectionReason
- }
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/test/java/org/springframework/cloud/MvcTest.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/test/java/org/springframework/cloud/MvcTest.java
deleted file mode 100644
index 5769f5ae0f..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/test/java/org/springframework/cloud/MvcTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud;
-
-import java.net.URI;
-
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.UriBuilder;
-
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.glassfish.jersey.client.ClientConfig;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-
-import org.springframework.cloud.frauddetection.FraudDetectionController;
-
-import static org.springframework.util.SocketUtils.findAvailableTcpPort;
-
-public abstract class MvcTest {
-
- public static WebTarget webTarget;
-
- private static Server server;
-
- private static Client client;
-
- @BeforeClass
- public static void setupTest() throws Exception {
- int port = findAvailableTcpPort(10000);
- URI baseUri = UriBuilder.fromUri("http://localhost").port(port).build();
- // Create Server
- Server server = new Server(port);
- // Configure ServletContextHandler
- ServletContextHandler context = new ServletContextHandler(
- ServletContextHandler.SESSIONS);
- context.setContextPath("/");
- server.setHandler(context);
- // Create Servlet Container
- ServletHolder jerseyServlet = context
- .addServlet(org.glassfish.jersey.servlet.ServletContainer.class, "/*");
- jerseyServlet.setInitOrder(0);
- // Tells the Jersey Servlet which REST service/class to load.
- jerseyServlet.setInitParameter("jersey.config.server.provider.classnames",
- FraudDetectionController.class.getCanonicalName());
- // Start the server
- server.start();
- ClientConfig clientConfig = new ClientConfig();
- client = ClientBuilder.newClient(clientConfig);
- webTarget = client.target(baseUri);
- try {
- server.start();
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- @AfterClass
- public static void cleanupTest() {
- if (client != null) {
- client.close();
- }
- if (server != null) {
- try {
- server.stop();
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
-
- public void assertThatRejectionReasonIsNull(Object rejectionReason) {
- assert rejectionReason == null;
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/Application.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/Application.java
deleted file mode 100644
index 982a795302..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/Application.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@EnableAutoConfiguration
-@ComponentScan
-public class Application {
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/test/resources/mappings/META-INF/com.example.jersey/fraudDetectionService/unspecified/mappings/contracts/com/example/jersey/fraudDetectionService/shouldMarkClientAsFraud.json b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/test/resources/mappings/META-INF/com.example.jersey/fraudDetectionService/unspecified/mappings/contracts/com/example/jersey/fraudDetectionService/shouldMarkClientAsFraud.json
deleted file mode 100644
index 25a67001a6..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/test/resources/mappings/META-INF/com.example.jersey/fraudDetectionService/unspecified/mappings/contracts/com/example/jersey/fraudDetectionService/shouldMarkClientAsFraud.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "id": "856bd753-2488-4549-b84f-512e851958a9",
- "request": {
- "url": "/fraudcheck",
- "method": "PUT",
- "headers": {
- "Content-Type": {
- "equalTo": "application/vnd.fraud.v1+json"
- }
- },
- "bodyPatterns": [
- {
- "matchesJsonPath": "$[?(@.['loanAmount'] == 99999)]"
- },
- {
- "matchesJsonPath": "$[?(@.['clientPesel'] =~ /[0-9]{10}/)]"
- }
- ]
- },
- "response": {
- "status": 200,
- "body": "{\"fraudCheckStatus\":\"FRAUD\",\"rejectionReason\":\"Amount too high\"}",
- "headers": {
- "Content-Type": "application/vnd.fraud.v1+json"
- },
- "transformers": [
- "response-template"
- ]
- },
- "uuid": "856bd753-2488-4549-b84f-512e851958a9"
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/test/resources/mappings/META-INF/com.example.jersey/fraudDetectionService/unspecified/mappings/contracts/com/example/jersey/fraudDetectionService/shouldMarkClientAsNotFraud.json b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/test/resources/mappings/META-INF/com.example.jersey/fraudDetectionService/unspecified/mappings/contracts/com/example/jersey/fraudDetectionService/shouldMarkClientAsNotFraud.json
deleted file mode 100644
index d62d2b8532..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/test/resources/mappings/META-INF/com.example.jersey/fraudDetectionService/unspecified/mappings/contracts/com/example/jersey/fraudDetectionService/shouldMarkClientAsNotFraud.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "id": "263aac46-1534-497d-9cc6-114a29ffa0de",
- "request": {
- "url": "/fraudcheck",
- "method": "PUT",
- "headers": {
- "Content-Type": {
- "equalTo": "application/vnd.fraud.v1+json"
- }
- },
- "bodyPatterns": [
- {
- "matchesJsonPath": "$[?(@.['loanAmount'] == 123.123)]"
- },
- {
- "matchesJsonPath": "$[?(@.['clientPesel'] =~ /[0-9]{10}/)]"
- }
- ]
- },
- "response": {
- "status": 200,
- "body": "{\"fraudCheckStatus\":\"OK\",\"rejectionReason\":null}",
- "headers": {
- "Content-Type": "application/vnd.fraud.v1+json"
- },
- "transformers": [
- "response-template"
- ]
- },
- "uuid": "263aac46-1534-497d-9cc6-114a29ffa0de"
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/0.0.1-SNAPSHOT/jersey-contracts-0.0.1-SNAPSHOT.jar b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/0.0.1-SNAPSHOT/jersey-contracts-0.0.1-SNAPSHOT.jar
deleted file mode 100644
index 8de83843d0..0000000000
Binary files a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/0.0.1-SNAPSHOT/jersey-contracts-0.0.1-SNAPSHOT.jar and /dev/null differ
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/0.0.1-SNAPSHOT/jersey-contracts-0.0.1-SNAPSHOT.pom b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/0.0.1-SNAPSHOT/jersey-contracts-0.0.1-SNAPSHOT.pom
deleted file mode 100644
index 4b4ae1a9dc..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/0.0.1-SNAPSHOT/jersey-contracts-0.0.1-SNAPSHOT.pom
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- 4.0.0
- com.example
- jersey-contracts
- 0.0.1-SNAPSHOT
- pom
-
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/0.0.1-SNAPSHOT/maven-metadata-local.xml b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/0.0.1-SNAPSHOT/maven-metadata-local.xml
deleted file mode 100644
index b6f14758ae..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/0.0.1-SNAPSHOT/maven-metadata-local.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
- com.example
- jersey-contracts
- 0.0.1-SNAPSHOT
-
-
- true
-
- 20160916125313
-
-
- jar
- 0.0.1-SNAPSHOT
- 20170916125313
-
-
- pom
- 0.0.1-SNAPSHOT
- 20160916125313
-
-
-
-
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/maven-metadata.xml b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/maven-metadata.xml
deleted file mode 100644
index 4a03c77e61..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/m2repo/repository/com/example/jersey-contracts/maven-metadata.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- com.example
- jersey-contracts
- 0.0.1-SNAPSHOT
-
-
- 0.0.1-SNAPSHOT
-
- 20160409062112
-
-
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/settings.gradle b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/settings.gradle
deleted file mode 100644
index 747ffa4306..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/settings.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-include ':fraudDetectionService'
-include ':loanApplicationService'
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/build.gradle b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/build.gradle
deleted file mode 100644
index 87a648e058..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/build.gradle
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-buildscript {
- repositories {
- mavenCentral()
- mavenLocal()
- maven { url "https://repo.spring.io/snapshot" }
- maven { url "https://repo.spring.io/milestone" }
- maven { url "https://repo.spring.io/release" }
- }
- dependencies {
- classpath("org.springframework.boot:spring-boot-gradle-plugin:${bootVersion}")
- }
-}
-
-ext {
- restAssuredVersion = '3.0.7'
- spockVersion = '1.0-groovy-2.4'
-
- contractVerifierStubsBaseDirectory = 'src/test/resources/stubs'
-}
-
-group = 'org.springframework.cloud.testprojects'
-
-subprojects {
- apply plugin: 'groovy'
-
- sourceCompatibility = 1.8
- targetCompatibility = 1.8
-
- repositories {
- mavenCentral()
- mavenLocal()
- maven { url "https://repo.spring.io/snapshot" }
- maven { url "https://repo.spring.io/milestone" }
- maven { url "https://repo.spring.io/release" }
- }
-
- dependencies {
- testCompile("org.codehaus.groovy:groovy")
- testCompile "org.spockframework:spock-core:$spockVersion"
- testCompile("junit:junit:4.12")
- testCompile "com.github.tomakehurst:wiremock:${wiremockVersion}"
- testCompile "com.toomuchcoding.jsonassert:jsonassert:${jsonAssertVersion}"
- testCompile "org.springframework.cloud:spring-cloud-contract-verifier:${verifierVersion}"
- }
-}
-
-configure([project(':fraudDetectionService'), project(':loanApplicationService')]) {
- apply plugin: 'org.springframework.boot'
- apply plugin: 'io.spring.dependency-management'
- apply plugin: 'spring-cloud-contract'
- apply plugin: 'maven-publish'
-
- ext {
- contractsDir = file("mappings")
- stubsOutputDirRoot = file("${project.buildDir}/production/${project.name}-stubs/")
- }
-
- contracts {
- contractsMode = "REMOTE"
- testFramework = 'Spock'
- testMode = 'MockMvc'
- baseClassForTests = 'org.springframework.cloud.MvcSpec'
- contractsDslDir = file("${project.projectDir.absolutePath}/mappings/")
- generatedTestSourcesDir = file("${project.buildDir}/generated-test-sources/")
- stubsOutputDir = stubsOutputDirRoot
- }
-
- jar {
- version = '0.0.1'
- }
-
- dependencies {
- compile("org.springframework.boot:spring-boot-starter-web") {
- exclude module: "spring-boot-starter-tomcat"
- }
- compile("org.springframework.boot:spring-boot-starter-jetty")
- compile("org.springframework.boot:spring-boot-starter-actuator")
-
- testRuntime("org.spockframework:spock-spring:$spockVersion") {
- exclude(group: 'org.codehaus.groovy')
- }
- testCompile "org.mockito:mockito-core"
- testCompile "org.springframework:spring-test"
- testCompile "org.springframework.boot:spring-boot-test"
- testCompile "io.rest-assured:rest-assured:$restAssuredVersion"
- testCompile "io.rest-assured:spring-mock-mvc:$restAssuredVersion"
- }
-
- task cleanup(type: Delete) {
- delete 'src/test/resources/mappings', 'src/test/resources/stubs'
- }
-
- clean.dependsOn('cleanup')
-
- test {
- testLogging {
- exceptionFormat = 'full'
- }
- }
-}
-
-configure(project(':fraudDetectionService')) {
- test.dependsOn('generateClientStubs')
-}
-
-configure(project(':loanApplicationService')) {
-
- task copyCollaboratorStubs(type: Copy) {
- File fraudBuildDir = project(':fraudDetectionService').buildDir
- from(new File(fraudBuildDir, "/production/${project(':fraudDetectionService').name}-stubs/"))
- into "src/test/resources/"
- }
-
- project.tasks.named("generateContractTests").get().dependsOn('copyCollaboratorStubs')
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/model/FraudCheck.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/model/FraudCheck.java
deleted file mode 100644
index d29096c59a..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/model/FraudCheck.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection.model;
-
-import java.math.BigDecimal;
-
-public class FraudCheck {
-
- private String clientPesel;
-
- private BigDecimal loanAmount;
-
- public FraudCheck() {
- }
-
- public String getClientPesel() {
- return this.clientPesel;
- }
-
- public void setClientPesel(String clientPesel) {
- this.clientPesel = clientPesel;
- }
-
- public BigDecimal getLoanAmount() {
- return this.loanAmount;
- }
-
- public void setLoanAmount(BigDecimal loanAmount) {
- this.loanAmount = loanAmount;
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/model/FraudCheckResult.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/model/FraudCheckResult.java
deleted file mode 100644
index 7704dbaa4e..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/model/FraudCheckResult.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection.model;
-
-public class FraudCheckResult {
-
- private FraudCheckStatus fraudCheckStatus;
-
- private String rejectionReason;
-
- public FraudCheckResult() {
- }
-
- public FraudCheckResult(FraudCheckStatus fraudCheckStatus, String rejectionReason) {
- this.fraudCheckStatus = fraudCheckStatus;
- this.rejectionReason = rejectionReason;
- }
-
- public FraudCheckStatus getFraudCheckStatus() {
- return this.fraudCheckStatus;
- }
-
- public void setFraudCheckStatus(FraudCheckStatus fraudCheckStatus) {
- this.fraudCheckStatus = fraudCheckStatus;
- }
-
- public String getRejectionReason() {
- return this.rejectionReason;
- }
-
- public void setRejectionReason(String rejectionReason) {
- this.rejectionReason = rejectionReason;
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/model/FraudCheckStatus.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/model/FraudCheckStatus.java
deleted file mode 100644
index 1cadcdfa93..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/model/FraudCheckStatus.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection.model;
-
-public enum FraudCheckStatus {
-
- OK, FRAUD
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/resources/application.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/resources/application.properties
deleted file mode 100644
index 17d0b12361..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/resources/application.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-#WireMock password - https://wiremock.org/docs/running-standalone/
-server.ssl.key-store-password=password
-server.ssl.key-password=password
-server.ssl.trust-store-password=password
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/resources/application.yml b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/resources/application.yml
deleted file mode 100644
index cbe617ef03..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/resources/application.yml
+++ /dev/null
@@ -1 +0,0 @@
-server.port=0
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle.properties
deleted file mode 100644
index bdf083b1e9..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Copyright 2013-2019 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-wiremockVersion=2.24.1
-jsonAssertVersion=0.4.13
-verifierVersion=2.2.0.BUILD-SNAPSHOT
-bootVersion=2.2.0.BUILD-SNAPSHOT
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle/wrapper/gradle-wrapper.jar b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 87b738cbd0..0000000000
Binary files a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle/wrapper/gradle-wrapper.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index b0acbdcd73..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradlew b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradlew
deleted file mode 100755
index af6708ff22..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradlew
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env sh
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
- echo "$*"
-}
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; 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
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=$(save "$@")
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
-if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
- cd "$(dirname "$0")"
-fi
-
-exec "$JAVACMD" "$@"
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradlew.bat b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradlew.bat
deleted file mode 100644
index 0f8d5937c4..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradlew.bat
+++ /dev/null
@@ -1,84 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-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
-
-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%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/mappings/.gitkeep b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/mappings/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/LoanApplicationService.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/LoanApplicationService.java
deleted file mode 100644
index 5cea9434a9..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/LoanApplicationService.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection;
-
-import org.springframework.cloud.frauddetection.model.FraudCheckStatus;
-import org.springframework.cloud.frauddetection.model.FraudServiceRequest;
-import org.springframework.cloud.frauddetection.model.FraudServiceResponse;
-import org.springframework.cloud.frauddetection.model.LoanApplication;
-import org.springframework.cloud.frauddetection.model.LoanApplicationResult;
-import org.springframework.cloud.frauddetection.model.LoanApplicationStatus;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-
-@Service
-public class LoanApplicationService {
-
- private static final String FRAUD_SERVICE_JSON_VERSION_1 = "application/vnd.fraud.v1+json";
-
- private final RestTemplate restTemplate;
-
- private int port = 8080;
-
- public LoanApplicationService() {
- this.restTemplate = new RestTemplate();
- }
-
- public LoanApplicationResult loanApplication(LoanApplication loanApplication) {
- FraudServiceRequest request = new FraudServiceRequest(loanApplication);
-
- FraudServiceResponse response = sendRequestToFraudDetectionService(request);
-
- return buildResponseFromFraudResult(response);
- }
-
- private FraudServiceResponse sendRequestToFraudDetectionService(
- FraudServiceRequest request) {
- HttpHeaders httpHeaders = new HttpHeaders();
- httpHeaders.add(HttpHeaders.CONTENT_TYPE, FRAUD_SERVICE_JSON_VERSION_1);
-
- ResponseEntity response = this.restTemplate.exchange(
- "http://localhost:" + this.port + "/fraudcheck", HttpMethod.PUT,
- new HttpEntity<>(request, httpHeaders), FraudServiceResponse.class);
-
- return response.getBody();
- }
-
- private LoanApplicationResult buildResponseFromFraudResult(
- FraudServiceResponse response) {
- LoanApplicationStatus applicationStatus = null;
- if (FraudCheckStatus.OK == response.getFraudCheckStatus()) {
- applicationStatus = LoanApplicationStatus.LOAN_APPLIED;
- }
- else if (FraudCheckStatus.FRAUD == response.getFraudCheckStatus()) {
- applicationStatus = LoanApplicationStatus.LOAN_APPLICATION_REJECTED;
- }
-
- return new LoanApplicationResult(applicationStatus,
- response.getRejectionReason());
- }
-
- public void setPort(int port) {
- this.port = port;
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/Client.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/Client.java
deleted file mode 100644
index 72024217cc..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/Client.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection.model;
-
-public class Client {
-
- private String pesel;
-
- public String getPesel() {
- return this.pesel;
- }
-
- public void setPesel(String pesel) {
- this.pesel = pesel;
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckStatus.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckStatus.java
deleted file mode 100644
index 1cadcdfa93..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckStatus.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection.model;
-
-public enum FraudCheckStatus {
-
- OK, FRAUD
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceRequest.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceRequest.java
deleted file mode 100644
index 6a76e76ed6..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceRequest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection.model;
-
-import java.math.BigDecimal;
-
-public class FraudServiceRequest {
-
- private String clientPesel;
-
- private BigDecimal loanAmount;
-
- public FraudServiceRequest() {
- }
-
- public FraudServiceRequest(LoanApplication loanApplication) {
- this.clientPesel = loanApplication.getClient().getPesel();
- this.loanAmount = loanApplication.getAmount();
- }
-
- public String getClientPesel() {
- return this.clientPesel;
- }
-
- public void setClientPesel(String clientPesel) {
- this.clientPesel = clientPesel;
- }
-
- public BigDecimal getLoanAmount() {
- return this.loanAmount;
- }
-
- public void setLoanAmount(BigDecimal loanAmount) {
- this.loanAmount = loanAmount;
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceResponse.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceResponse.java
deleted file mode 100644
index 4f4579e901..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceResponse.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection.model;
-
-public class FraudServiceResponse {
-
- private FraudCheckStatus fraudCheckStatus;
-
- private String rejectionReason;
-
- public FraudServiceResponse() {
- }
-
- public FraudCheckStatus getFraudCheckStatus() {
- return this.fraudCheckStatus;
- }
-
- public void setFraudCheckStatus(FraudCheckStatus fraudCheckStatus) {
- this.fraudCheckStatus = fraudCheckStatus;
- }
-
- public String getRejectionReason() {
- return this.rejectionReason;
- }
-
- public void setRejectionReason(String rejectionReason) {
- this.rejectionReason = rejectionReason;
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplication.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplication.java
deleted file mode 100644
index f2cac2fddd..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplication.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection.model;
-
-import java.math.BigDecimal;
-
-public class LoanApplication {
-
- private Client client;
-
- private BigDecimal amount;
-
- private String loanApplicationId;
-
- public Client getClient() {
- return this.client;
- }
-
- public void setClient(Client client) {
- this.client = client;
- }
-
- public BigDecimal getAmount() {
- return this.amount;
- }
-
- public void setAmount(BigDecimal amount) {
- this.amount = amount;
- }
-
- public String getLoanApplicationId() {
- return this.loanApplicationId;
- }
-
- public void setLoanApplicationId(String loanApplicationId) {
- this.loanApplicationId = loanApplicationId;
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationResult.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationResult.java
deleted file mode 100644
index e90dc70ead..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationResult.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection.model;
-
-public class LoanApplicationResult {
-
- private LoanApplicationStatus loanApplicationStatus;
-
- private String rejectionReason;
-
- public LoanApplicationResult() {
- }
-
- public LoanApplicationResult(LoanApplicationStatus loanApplicationStatus,
- String rejectionReason) {
- this.loanApplicationStatus = loanApplicationStatus;
- this.rejectionReason = rejectionReason;
- }
-
- public LoanApplicationStatus getLoanApplicationStatus() {
- return this.loanApplicationStatus;
- }
-
- public void setLoanApplicationStatus(LoanApplicationStatus loanApplicationStatus) {
- this.loanApplicationStatus = loanApplicationStatus;
- }
-
- public String getRejectionReason() {
- return this.rejectionReason;
- }
-
- public void setRejectionReason(String rejectionReason) {
- this.rejectionReason = rejectionReason;
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationStatus.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationStatus.java
deleted file mode 100644
index 68a39e88fd..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationStatus.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.frauddetection.model;
-
-public enum LoanApplicationStatus {
-
- LOAN_APPLIED, LOAN_APPLICATION_REJECTED
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/resources/application.yml b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/resources/application.yml
deleted file mode 100644
index cbe617ef03..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/resources/application.yml
+++ /dev/null
@@ -1 +0,0 @@
-server.port=0
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/test/groovy/org/springframework/cloud/LoanApplicationServiceSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/test/groovy/org/springframework/cloud/LoanApplicationServiceSpec.groovy
deleted file mode 100644
index 403c97f67d..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/test/groovy/org/springframework/cloud/LoanApplicationServiceSpec.groovy
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud
-
-import com.github.tomakehurst.wiremock.junit.WireMockClassRule
-import org.junit.ClassRule
-import spock.lang.Shared
-import spock.lang.Specification
-
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.context.SpringBootContextLoader
-import org.springframework.cloud.frauddetection.Application
-import org.springframework.cloud.frauddetection.LoanApplicationService
-import org.springframework.cloud.frauddetection.model.Client
-import org.springframework.cloud.frauddetection.model.LoanApplication
-import org.springframework.cloud.frauddetection.model.LoanApplicationResult
-import org.springframework.cloud.frauddetection.model.LoanApplicationStatus
-import org.springframework.test.context.ContextConfiguration
-
-@ContextConfiguration(loader = SpringBootContextLoader, classes = Application)
-class LoanApplicationServiceSpec extends Specification {
-
- public static int port = org.springframework.util.SocketUtils.findAvailableTcpPort()
-
- @ClassRule
- @Shared
- WireMockClassRule wireMockRule = new WireMockClassRule(port)
-
- @Autowired
- LoanApplicationService sut
-
- def setup() {
- sut.port = port
- }
-
- def 'should successfully apply for loan'() {
- given:
- LoanApplication application =
- new LoanApplication(client: new Client(pesel: '1234567890'), amount: 123.123)
- when:
- LoanApplicationResult loanApplication = sut.loanApplication(application)
- then:
- loanApplication.loanApplicationStatus == LoanApplicationStatus.LOAN_APPLIED
- loanApplication.rejectionReason == null
- }
-
- def 'should be rejected due to abnormal loan amount'() {
- given:
- LoanApplication application =
- new LoanApplication(client: new Client(pesel: '1234567890'), amount: 99_999)
- when:
- LoanApplicationResult loanApplication = sut.loanApplication(application)
- then:
- loanApplication.loanApplicationStatus == LoanApplicationStatus.LOAN_APPLICATION_REJECTED
- loanApplication.rejectionReason == 'Amount too high'
- }
-
-}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/settings.gradle b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/settings.gradle
deleted file mode 100644
index 22aab22cb1..0000000000
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/settings.gradle
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2013-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-include ':fraudDetectionService'
-include ':loanApplicationService'
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/build.gradle b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/build.gradle
index 0b4d5ae3f6..fd45f024c8 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/build.gradle
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/build.gradle
@@ -14,18 +14,9 @@
* limitations under the License.
*/
-
-buildscript {
- repositories {
- mavenCentral()
- mavenLocal()
- maven { url "https://repo.spring.io/snapshot" }
- maven { url "https://repo.spring.io/milestone" }
- maven { url "https://repo.spring.io/release" }
- }
- dependencies {
- classpath("org.springframework.boot:spring-boot-gradle-plugin:${bootVersion}")
- }
+plugins {
+ id("org.springframework.boot") apply false
+ id("org.springframework.cloud.contract") apply false
}
ext {
@@ -69,7 +60,7 @@ subprojects {
configure([project(':fraudDetectionService'), project(':loanApplicationService')]) {
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
- apply plugin: 'spring-cloud-contract'
+ apply plugin: 'org.springframework.cloud.contract'
// tag::jar_setup[]
ext {
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/settings.gradle b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/settings.gradle
index 22aab22cb1..1f2b6325c9 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/settings.gradle
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/settings.gradle
@@ -14,6 +14,24 @@
* limitations under the License.
*/
+pluginManagement {
+ repositories {
+ mavenCentral()
+ mavenLocal()
+ maven { url "https://repo.spring.io/snapshot" }
+ maven { url "https://repo.spring.io/milestone" }
+ maven { url "https://repo.spring.io/release" }
+ }
+ resolutionStrategy {
+ eachPlugin {
+ if (requested.id.id == "org.springframework.boot") {
+ useModule("org.springframework.boot:spring-boot-gradle-plugin:${bootVersion}")
+ } else if (requested.id.id == "org.springframework.cloud.contract") {
+ useModule("org.springframework.cloud:spring-cloud-contract-gradle-plugin:${verifierVersion}")
+ }
+ }
+ }
+}
include ':fraudDetectionService'
include ':loanApplicationService'
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/build.gradle.kts b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/build.gradle.kts
new file mode 100644
index 0000000000..f86ff12e96
--- /dev/null
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/build.gradle.kts
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2013-2019 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties
+import org.springframework.cloud.contract.verifier.config.TestFramework
+import org.springframework.cloud.contract.verifier.config.TestMode
+import org.springframework.cloud.contract.verifier.plugin.ContractVerifierExtension
+
+plugins {
+ groovy
+ id("org.springframework.boot") apply false
+ id("org.springframework.cloud.contract") apply false
+}
+
+val restAssuredVersion by extra("3.0.7")
+val spockVersion by extra("1.0-groovy-2.4")
+val wiremockVersion: String by extra
+val jsonAssertVersion: String by extra
+val verifierVersion: String by extra
+
+val contractVerifierStubsBaseDirectory by extra("src/test/resources/stubs")
+
+group = "org.springframework.cloud.testprojects"
+
+subprojects {
+ apply(plugin = "groovy")
+
+ java {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+ }
+
+ repositories {
+ mavenCentral()
+ mavenLocal()
+ maven(url = "https://repo.spring.io/snapshot")
+ maven(url = "https://repo.spring.io/milestone")
+ maven(url = "https://repo.spring.io/release")
+ }
+
+ dependencies {
+ testCompile("org.codehaus.groovy:groovy")
+ testCompile("org.spockframework:spock-core:$spockVersion")
+ testCompile("junit:junit:4.12")
+ testCompile("com.github.tomakehurst:wiremock:$wiremockVersion")
+ testCompile("com.toomuchcoding.jsonassert:jsonassert:$jsonAssertVersion")
+ testCompile("org.springframework.cloud:spring-cloud-contract-verifier:$verifierVersion")
+ }
+}
+
+configure(listOf(project(":fraudDetectionService"), project(":loanApplicationService"))) {
+ apply(plugin = "org.springframework.boot")
+ apply(plugin = "io.spring.dependency-management")
+ apply(plugin = "org.springframework.cloud.contract")
+ apply(plugin = "maven-publish")
+
+ configure {
+ contractsMode.set(StubRunnerProperties.StubsMode.REMOTE)
+ testFramework.set(TestFramework.SPOCK)
+ testMode.set(TestMode.MOCKMVC)
+ baseClassForTests.set("org.springframework.cloud.MvcSpec")
+ contractsDslDir.set(file("${project.projectDir}/mappings/"))
+ generatedTestSourcesDir.set(file("${project.buildDir}/generated-test-sources/"))
+ stubsOutputDir.set(file("${project.buildDir}/production/${project.name}-stubs/"))
+ }
+
+ dependencies {
+ compile("org.springframework.boot:spring-boot-starter-web") {
+ exclude(module = "spring-boot-starter-tomcat")
+ }
+ compile("org.springframework.boot:spring-boot-starter-jetty")
+ compile("org.springframework.boot:spring-boot-starter-actuator")
+
+ testRuntime("org.spockframework:spock-spring:$spockVersion") {
+ exclude(group = "org.codehaus.groovy")
+ }
+ testCompile("org.mockito:mockito-core")
+ testCompile("org.springframework:spring-test")
+ testCompile("org.springframework.boot:spring-boot-test")
+ testCompile("io.rest-assured:rest-assured:$restAssuredVersion")
+ testCompile("io.rest-assured:spring-mock-mvc:$restAssuredVersion")
+ }
+
+ tasks {
+ jar {
+ version = "0.0.1"
+ }
+
+ test {
+ testLogging.showExceptions = true
+ }
+
+ val cleanup by registering(Delete::class) {
+ delete("src/test/resources/mappings", "src/test/resources/stubs")
+ }
+
+ clean {
+ dependsOn(cleanup)
+ }
+ }
+}
+
+configure(listOf(project(":fraudDetectionService"))) {
+ tasks {
+ test {
+ dependsOn("generateClientStubs")
+ }
+ }
+}
+
+configure(listOf(project(":loanApplicationService"))) {
+ tasks {
+ val copyCollaboratorStubs by registering(Copy::class) {
+ val fraudDetectionService = project(":fraudDetectionService")
+ from(file("${fraudDetectionService.buildDir}/production/${fraudDetectionService.name}-stubs"))
+ into("src/test/resources/mappings")
+ }
+
+ val generateContractTests by existing
+ generateContractTests {
+ dependsOn(copyCollaboratorStubs)
+ }
+ }
+}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/mappings/fraudDetectionService/shouldMarkClientAsNotFraud.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/mappings/fraudDetectionService/1_shouldMarkClientAsNotFraud.groovy
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/mappings/fraudDetectionService/shouldMarkClientAsNotFraud.groovy
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/mappings/fraudDetectionService/1_shouldMarkClientAsNotFraud.groovy
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/mappings/fraudDetectionService/shouldMarkClientAsFraud.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/mappings/fraudDetectionService/2_shouldMarkClientAsFraud.groovy
similarity index 99%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/mappings/fraudDetectionService/shouldMarkClientAsFraud.groovy
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/mappings/fraudDetectionService/2_shouldMarkClientAsFraud.groovy
index 8cfbba1828..e8558aa525 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/mappings/fraudDetectionService/shouldMarkClientAsFraud.groovy
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/mappings/fraudDetectionService/2_shouldMarkClientAsFraud.groovy
@@ -14,6 +14,7 @@
* limitations under the License.
*/
+
import org.springframework.cloud.contract.spec.Contract
Contract.make {
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/Application.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/Application.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/Application.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/Application.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/FraudDetectionController.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/FraudDetectionController.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/main/java/org/springframework/frauddetection/FraudDetectionController.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/FraudDetectionController.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheck.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheck.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheck.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheck.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckResult.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckResult.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckResult.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckResult.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckStatus.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckStatus.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckStatus.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckStatus.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/main/resources/application.yml b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/resources/application.yml
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/fraudDetectionService/src/main/resources/application.yml
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/main/resources/application.yml
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/test/groovy/org/springframework/cloud/MvcSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/test/groovy/org/springframework/cloud/MvcSpec.groovy
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/test/groovy/org/springframework/cloud/MvcSpec.groovy
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/test/groovy/org/springframework/cloud/MvcSpec.groovy
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/test/java/org/springframework/cloud/MvcTest.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/test/java/org/springframework/cloud/MvcTest.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/fraudDetectionService/src/test/java/org/springframework/cloud/MvcTest.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/fraudDetectionService/src/test/java/org/springframework/cloud/MvcTest.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradle.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradle.properties
similarity index 97%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradle.properties
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradle.properties
index bdf083b1e9..964754f1e1 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradle.properties
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradle.properties
@@ -17,3 +17,4 @@ wiremockVersion=2.24.1
jsonAssertVersion=0.4.13
verifierVersion=2.2.0.BUILD-SNAPSHOT
bootVersion=2.2.0.BUILD-SNAPSHOT
+groovyVersion=2.4.17
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradle/wrapper/gradle-wrapper.jar b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradle/wrapper/gradle-wrapper.jar
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradle/wrapper/gradle-wrapper.jar
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradle/wrapper/gradle-wrapper.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradle/wrapper/gradle-wrapper.properties
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradle/wrapper/gradle-wrapper.properties
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradlew b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradlew
old mode 100755
new mode 100644
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradlew
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradlew
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradlew.bat b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradlew.bat
similarity index 96%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradlew.bat
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradlew.bat
index 0f8d5937c4..6d57edc706 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradlew.bat
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/gradlew.bat
@@ -1,84 +1,84 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-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
-
-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%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+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
+
+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%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/mappings/.gitkeep b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/mappings/.gitkeep
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/mappings/.gitkeep
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/mappings/.gitkeep
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/Application.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/Application.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/Application.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/Application.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/LoanApplicationService.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/LoanApplicationService.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/LoanApplicationService.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/LoanApplicationService.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/Client.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/Client.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/Client.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/Client.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckStatus.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckStatus.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckStatus.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudCheckStatus.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceRequest.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceRequest.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceRequest.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceRequest.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceResponse.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceResponse.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceResponse.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/FraudServiceResponse.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplication.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplication.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplication.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplication.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationResult.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationResult.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationResult.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationResult.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationStatus.java b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationStatus.java
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationStatus.java
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/java/org/springframework/cloud/frauddetection/model/LoanApplicationStatus.java
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/resources/application.yml b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/resources/application.yml
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/main/resources/application.yml
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/main/resources/application.yml
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/test/groovy/org/springframework/cloud/LoanApplicationServiceSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/test/groovy/org/springframework/cloud/LoanApplicationServiceSpec.groovy
similarity index 98%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/test/groovy/org/springframework/cloud/LoanApplicationServiceSpec.groovy
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/test/groovy/org/springframework/cloud/LoanApplicationServiceSpec.groovy
index 403c97f67d..8e14ce319c 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/loanApplicationService/src/test/groovy/org/springframework/cloud/LoanApplicationServiceSpec.groovy
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/test/groovy/org/springframework/cloud/LoanApplicationServiceSpec.groovy
@@ -20,6 +20,7 @@ import com.github.tomakehurst.wiremock.junit.WireMockClassRule
import org.junit.ClassRule
import spock.lang.Shared
import spock.lang.Specification
+import spock.lang.Stepwise
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootContextLoader
@@ -32,6 +33,7 @@ import org.springframework.cloud.frauddetection.model.LoanApplicationStatus
import org.springframework.test.context.ContextConfiguration
@ContextConfiguration(loader = SpringBootContextLoader, classes = Application)
+@Stepwise
class LoanApplicationServiceSpec extends Specification {
public static int port = org.springframework.util.SocketUtils.findAvailableTcpPort()
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/test/resources/mappings/fraudDetectionService/shouldMarkClientAsFraud.json b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/test/resources/mappings/fraudDetectionService/shouldMarkClientAsFraud.json
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/test/resources/mappings/fraudDetectionService/shouldMarkClientAsFraud.json
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/test/resources/mappings/fraudDetectionService/shouldMarkClientAsFraud.json
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/test/resources/mappings/fraudDetectionService/shouldMarkClientAsNotFraud.json b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/test/resources/mappings/fraudDetectionService/shouldMarkClientAsNotFraud.json
similarity index 100%
rename from spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/loanApplicationService/src/test/resources/mappings/fraudDetectionService/shouldMarkClientAsNotFraud.json
rename to spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/loanApplicationService/src/test/resources/mappings/fraudDetectionService/shouldMarkClientAsNotFraud.json
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/settings.gradle.kts b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/settings.gradle.kts
new file mode 100644
index 0000000000..7402ba3052
--- /dev/null
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProjectKotlin/settings.gradle.kts
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2013-2019 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+pluginManagement {
+ repositories {
+ mavenCentral()
+ mavenLocal()
+ maven(url = "https://repo.spring.io/snapshot")
+ maven(url = "https://repo.spring.io/milestone")
+ maven(url = "https://repo.spring.io/release")
+ }
+ resolutionStrategy {
+ eachPlugin {
+ if (requested.id.id == "org.springframework.boot") {
+ val bootVersion: String by extra
+ useModule("org.springframework.boot:spring-boot-gradle-plugin:$bootVersion")
+ } else if (requested.id.id == "org.springframework.cloud.contract") {
+ val verifierVersion: String by extra
+ useModule("org.springframework.cloud:spring-cloud-contract-gradle-plugin:$verifierVersion")
+ }
+ }
+ }
+}
+
+include(":fraudDetectionService")
+include(":loanApplicationService")