diff --git a/spring-cloud-contract-stub-runner/pom.xml b/spring-cloud-contract-stub-runner/pom.xml
index 8022acce99..dcd3afd8c1 100644
--- a/spring-cloud-contract-stub-runner/pom.xml
+++ b/spring-cloud-contract-stub-runner/pom.xml
@@ -223,9 +223,15 @@
gmavenplus-plugin
-
+
org.apache.maven.plugins
maven-surefire-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+ ${maven-failsafe-plugin.version}
@@ -239,32 +245,17 @@
${junit-vintage.version}
-
-
- org.junit.jupiter:junit-vintage-engine
-
-
-
-
-
- org.apache.maven.plugins
- maven-failsafe-plugin
- ${maven-failsafe-plugin.version}
-
-
- org.junit.jupiter
- junit-jupiter-engine
- ${junit-jupiter.version}
-
-
- **/*Test.*
- **/*Tests.*
- **/*Spec.*
+ **/junit4/*Test.*
+ **/junit4/*Tests.*
+ **/junit4/*Spec.*
plain
true
+
+ org.junit.jupiter:junit-vintage-engine
+
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleCustomMsgVerifierSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleCustomMsgVerifierSpec.groovy
similarity index 95%
rename from spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleCustomMsgVerifierSpec.groovy
rename to spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleCustomMsgVerifierSpec.groovy
index 40444dbf04..f08a9cd428 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleCustomMsgVerifierSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleCustomMsgVerifierSpec.groovy
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.cloud.contract.stubrunner.junit
+package org.springframework.cloud.contract.stubrunner.junit4
import java.util.concurrent.TimeUnit
@@ -24,6 +24,7 @@ import org.junit.ClassRule
import spock.lang.Shared
import spock.lang.Specification
+import org.springframework.cloud.contract.stubrunner.junit.StubRunnerRule
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties
import org.springframework.cloud.contract.verifier.converter.YamlContract
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleCustomPortJUnitTest.java b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleCustomPortJUnitTest.java
similarity index 96%
rename from spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleCustomPortJUnitTest.java
rename to spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleCustomPortJUnitTest.java
index d20b2de646..39d32657c2 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleCustomPortJUnitTest.java
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleCustomPortJUnitTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.cloud.contract.stubrunner.junit;
+package org.springframework.cloud.contract.stubrunner.junit4;
import java.io.InputStream;
import java.net.URI;
@@ -25,6 +25,7 @@ import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
+import org.springframework.cloud.contract.stubrunner.junit.StubRunnerRule;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
import org.springframework.util.StreamUtils;
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleExceptionThrowingSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleExceptionThrowingSpec.groovy
similarity index 93%
rename from spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleExceptionThrowingSpec.groovy
rename to spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleExceptionThrowingSpec.groovy
index 3e818f3c52..ff45ab8fee 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleExceptionThrowingSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleExceptionThrowingSpec.groovy
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.cloud.contract.stubrunner.junit
+package org.springframework.cloud.contract.stubrunner.junit4
import org.junit.AfterClass
import org.junit.BeforeClass
@@ -22,6 +22,7 @@ import org.junit.ClassRule
import spock.lang.Shared
import spock.lang.Specification
+import org.springframework.cloud.contract.stubrunner.junit.StubRunnerRule
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties
/**
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleJUnitTest.java b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleJUnitTest.java
similarity index 95%
rename from spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleJUnitTest.java
rename to spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleJUnitTest.java
index 1b9b815f45..534004f01f 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleJUnitTest.java
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleJUnitTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.cloud.contract.stubrunner.junit;
+package org.springframework.cloud.contract.stubrunner.junit4;
import java.io.InputStream;
import java.net.URI;
@@ -25,6 +25,7 @@ import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
+import org.springframework.cloud.contract.stubrunner.junit.StubRunnerRule;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
import org.springframework.util.StreamUtils;
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleSpec.groovy
similarity index 95%
rename from spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleSpec.groovy
rename to spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleSpec.groovy
index 81e9cab9b6..a1f0128162 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit/StubRunnerRuleSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/junit4/StubRunnerRuleSpec.groovy
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.cloud.contract.stubrunner.junit
+package org.springframework.cloud.contract.stubrunner.junit4
import org.junit.AfterClass
import org.junit.BeforeClass
@@ -22,6 +22,7 @@ import org.junit.ClassRule
import spock.lang.Shared
import spock.lang.Specification
+import org.springframework.cloud.contract.stubrunner.junit.StubRunnerRule
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties
/**
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/server/StubRunnerBootSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/server/StubRunnerBootSpec.groovy
index 8567e81fe8..dd9f916c2f 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/server/StubRunnerBootSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/server/StubRunnerBootSpec.groovy
@@ -31,8 +31,7 @@ import org.springframework.test.context.ContextConfiguration
* @author Marcin Grzejszczak
*/
// tag::boot_usage[]
-@ContextConfiguration(classes = StubRunnerBoot, loader = SpringBootContextLoader)
-@SpringBootTest(properties = "spring.cloud.zookeeper.enabled=false")
+@SpringBootTest(classes = StubRunnerBoot, properties = "spring.cloud.zookeeper.enabled=false")
@ActiveProfiles("test")
class StubRunnerBootSpec extends Specification {
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy
index 0436b188b4..84faee8864 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy
@@ -20,15 +20,12 @@ import com.github.tomakehurst.wiremock.core.WireMockConfiguration
import groovy.transform.CompileStatic
import org.apache.commons.logging.Log
import org.apache.commons.logging.LogFactory
-import org.junit.AfterClass
-import org.junit.BeforeClass
import spock.lang.Issue
import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.stubrunner.HttpServerStubConfiguration
import org.springframework.cloud.contract.stubrunner.StubFinder
@@ -38,7 +35,6 @@ import org.springframework.cloud.contract.stubrunner.provider.wiremock.WireMockH
import org.springframework.context.annotation.Configuration
import org.springframework.core.env.Environment
import org.springframework.test.context.ActiveProfiles
-import org.springframework.test.context.ContextConfiguration
import org.springframework.util.SocketUtils
/**
@@ -47,131 +43,132 @@ import org.springframework.util.SocketUtils
// Not necessary if Spring Cloud is used. TODO: make it work without this.
// tag::test[]
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
-@SpringBootTest(properties = [" stubrunner.cloud.enabled=false",
- 'foo=${stubrunner.runningstubs.fraudDetectionServer.port}',
- 'fooWithGroup=${stubrunner.runningstubs.org.springframework.cloud.contract.verifier.stubs.fraudDetectionServer.port}'])
+@SpringBootTest(classes = Config, properties = [" stubrunner.cloud.enabled=false",
+ 'foo=${stubrunner.runningstubs.fraudDetectionServer.port}',
+ 'fooWithGroup=${stubrunner.runningstubs.org.springframework.cloud.contract.verifier.stubs.fraudDetectionServer.port}'])
// tag::annotation[]
@AutoConfigureStubRunner(mappingsOutputFolder = "target/outputmappings/",
- httpServerStubConfigurer = HttpsForFraudDetection)
+ httpServerStubConfigurer = HttpsForFraudDetection)
// end::annotation[]
@ActiveProfiles("test")
class StubRunnerConfigurationSpec extends Specification {
- @Autowired
- StubFinder stubFinder
- @Autowired
- Environment environment
- @StubRunnerPort("fraudDetectionServer")
- int fraudDetectionServerPort
- @StubRunnerPort("org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer")
- int fraudDetectionServerPortWithGroupId
- @Value('${foo}')
- Integer foo
+ @Autowired
+ StubFinder stubFinder
+ @Autowired
+ Environment environment
+ @StubRunnerPort("fraudDetectionServer")
+ int fraudDetectionServerPort
+ @StubRunnerPort("org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer")
+ int fraudDetectionServerPortWithGroupId
+ @Value('${foo}')
+ Integer foo
- @BeforeClass
- @AfterClass
- void setupProps() {
- System.clearProperty("stubrunner.repository.root")
- System.clearProperty("stubrunner.classifier")
- WireMockHttpServerStubAccessor.clear()
- }
+ void setupSpec() {
+ System.clearProperty("stubrunner.repository.root")
+ System.clearProperty("stubrunner.classifier")
+ WireMockHttpServerStubAccessor.clear()
+ }
- def 'should mark all ports as random'() {
- expect:
- WireMockHttpServerStubAccessor.everyPortRandom()
- }
+ void cleanupSpec() {
+ setupSpec()
+ }
- def 'should start WireMock servers'() {
- expect: 'WireMocks are running'
- stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs', 'loanIssuance') != null
- stubFinder.findStubUrl('loanIssuance') != null
- stubFinder.findStubUrl('loanIssuance') == stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs', 'loanIssuance')
- stubFinder.findStubUrl('loanIssuance') == stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs:loanIssuance')
- stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs:loanIssuance:0.0.1-SNAPSHOT') == stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs:loanIssuance:0.0.1-SNAPSHOT:stubs')
- stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer') != null
- and:
- stubFinder.findAllRunningStubs().isPresent('loanIssuance')
- stubFinder.findAllRunningStubs().isPresent('org.springframework.cloud.contract.verifier.stubs', 'fraudDetectionServer')
- stubFinder.findAllRunningStubs().isPresent('org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer')
- and: 'Stubs were registered'
- "${stubFinder.findStubUrl('loanIssuance').toString()}/name".toURL().text == 'loanIssuance'
- "${stubFinder.findStubUrl('fraudDetectionServer').toString()}/name".toURL().text == 'fraudDetectionServer'
- and: 'Fraud Detection is an HTTPS endpoint'
- stubFinder.findStubUrl('fraudDetectionServer').toString().startsWith("https")
- }
+ def 'should mark all ports as random'() {
+ expect:
+ WireMockHttpServerStubAccessor.everyPortRandom()
+ }
- def 'should throw an exception when stub is not found'() {
- when:
- stubFinder.findStubUrl('nonExistingService')
- then:
- thrown(StubNotFoundException)
- when:
- stubFinder.findStubUrl('nonExistingGroupId', 'nonExistingArtifactId')
- then:
- thrown(StubNotFoundException)
- }
+ def 'should start WireMock servers'() {
+ expect: 'WireMocks are running'
+ stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs', 'loanIssuance') != null
+ stubFinder.findStubUrl('loanIssuance') != null
+ stubFinder.findStubUrl('loanIssuance') == stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs', 'loanIssuance')
+ stubFinder.findStubUrl('loanIssuance') == stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs:loanIssuance')
+ stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs:loanIssuance:0.0.1-SNAPSHOT') == stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs:loanIssuance:0.0.1-SNAPSHOT:stubs')
+ stubFinder.findStubUrl('org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer') != null
+ and:
+ stubFinder.findAllRunningStubs().isPresent('loanIssuance')
+ stubFinder.findAllRunningStubs().isPresent('org.springframework.cloud.contract.verifier.stubs', 'fraudDetectionServer')
+ stubFinder.findAllRunningStubs().isPresent('org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer')
+ and: 'Stubs were registered'
+ "${stubFinder.findStubUrl('loanIssuance').toString()}/name".toURL().text == 'loanIssuance'
+ "${stubFinder.findStubUrl('fraudDetectionServer').toString()}/name".toURL().text == 'fraudDetectionServer'
+ and: 'Fraud Detection is an HTTPS endpoint'
+ stubFinder.findStubUrl('fraudDetectionServer').toString().startsWith("https")
+ }
- def 'should register started servers as environment variables'() {
- expect:
- environment.getProperty("stubrunner.runningstubs.loanIssuance.port") != null
- stubFinder.findAllRunningStubs().getPort("loanIssuance") == (environment.getProperty("stubrunner.runningstubs.loanIssuance.port") as Integer)
- and:
- environment.getProperty("stubrunner.runningstubs.fraudDetectionServer.port") != null
- stubFinder.findAllRunningStubs().getPort("fraudDetectionServer") == (environment.getProperty("stubrunner.runningstubs.fraudDetectionServer.port") as Integer)
- and:
- environment.getProperty("stubrunner.runningstubs.fraudDetectionServer.port") != null
- stubFinder.findAllRunningStubs().getPort("fraudDetectionServer") == (environment.getProperty("stubrunner.runningstubs.org.springframework.cloud.contract.verifier.stubs.fraudDetectionServer.port") as Integer)
- }
+ def 'should throw an exception when stub is not found'() {
+ when:
+ stubFinder.findStubUrl('nonExistingService')
+ then:
+ thrown(StubNotFoundException)
+ when:
+ stubFinder.findStubUrl('nonExistingGroupId', 'nonExistingArtifactId')
+ then:
+ thrown(StubNotFoundException)
+ }
- def 'should be able to interpolate a running stub in the passed test property'() {
- given:
- int fraudPort = stubFinder.findAllRunningStubs().getPort("fraudDetectionServer")
- expect:
- fraudPort > 0
- environment.getProperty("foo", Integer) == fraudPort
- environment.getProperty("fooWithGroup", Integer) == fraudPort
- foo == fraudPort
- }
+ def 'should register started servers as environment variables'() {
+ expect:
+ environment.getProperty("stubrunner.runningstubs.loanIssuance.port") != null
+ stubFinder.findAllRunningStubs().getPort("loanIssuance") == (environment.getProperty("stubrunner.runningstubs.loanIssuance.port") as Integer)
+ and:
+ environment.getProperty("stubrunner.runningstubs.fraudDetectionServer.port") != null
+ stubFinder.findAllRunningStubs().getPort("fraudDetectionServer") == (environment.getProperty("stubrunner.runningstubs.fraudDetectionServer.port") as Integer)
+ and:
+ environment.getProperty("stubrunner.runningstubs.fraudDetectionServer.port") != null
+ stubFinder.findAllRunningStubs().getPort("fraudDetectionServer") == (environment.getProperty("stubrunner.runningstubs.org.springframework.cloud.contract.verifier.stubs.fraudDetectionServer.port") as Integer)
+ }
- @Issue("#573")
- def 'should be able to retrieve the port of a running stub via an annotation'() {
- given:
- int fraudPort = stubFinder.findAllRunningStubs().getPort("fraudDetectionServer")
- expect:
- fraudPort > 0
- fraudDetectionServerPort == fraudPort
- fraudDetectionServerPortWithGroupId == fraudPort
- }
+ def 'should be able to interpolate a running stub in the passed test property'() {
+ given:
+ int fraudPort = stubFinder.findAllRunningStubs().getPort("fraudDetectionServer")
+ expect:
+ fraudPort > 0
+ environment.getProperty("foo", Integer) == fraudPort
+ environment.getProperty("fooWithGroup", Integer) == fraudPort
+ foo == fraudPort
+ }
- def 'should dump all mappings to a file'() {
- when:
- def url = stubFinder.findStubUrl("fraudDetectionServer")
- then:
- new File("target/outputmappings/", "fraudDetectionServer_${url.port}").exists()
- }
+ @Issue("#573")
+ def 'should be able to retrieve the port of a running stub via an annotation'() {
+ given:
+ int fraudPort = stubFinder.findAllRunningStubs().getPort("fraudDetectionServer")
+ expect:
+ fraudPort > 0
+ fraudDetectionServerPort == fraudPort
+ fraudDetectionServerPortWithGroupId == fraudPort
+ }
- @Configuration
- @EnableAutoConfiguration
- static class Config {}
+ def 'should dump all mappings to a file'() {
+ when:
+ def url = stubFinder.findStubUrl("fraudDetectionServer")
+ then:
+ new File("target/outputmappings/", "fraudDetectionServer_${url.port}").exists()
+ }
- // tag::wireMockHttpServerStubConfigurer[]
- @CompileStatic
- static class HttpsForFraudDetection extends WireMockHttpServerStubConfigurer {
+ @Configuration
+ @EnableAutoConfiguration
+ static class Config {}
- private static final Log log = LogFactory.getLog(HttpsForFraudDetection)
+ // tag::wireMockHttpServerStubConfigurer[]
+ @CompileStatic
+ static class HttpsForFraudDetection extends WireMockHttpServerStubConfigurer {
- @Override
- WireMockConfiguration configure(WireMockConfiguration httpStubConfiguration, HttpServerStubConfiguration httpServerStubConfiguration) {
- if (httpServerStubConfiguration.stubConfiguration.artifactId == "fraudDetectionServer") {
- int httpsPort = SocketUtils.findAvailableTcpPort()
- log.info("Will set HTTPs port [" + httpsPort + "] for fraud detection server")
- return httpStubConfiguration
- .httpsPort(httpsPort)
- }
- return httpStubConfiguration
- }
- }
- // end::wireMockHttpServerStubConfigurer[]
+ private static final Log log = LogFactory.getLog(HttpsForFraudDetection)
+
+ @Override
+ WireMockConfiguration configure(WireMockConfiguration httpStubConfiguration, HttpServerStubConfiguration httpServerStubConfiguration) {
+ if (httpServerStubConfiguration.stubConfiguration.artifactId == "fraudDetectionServer") {
+ int httpsPort = SocketUtils.findAvailableTcpPort()
+ log.info("Will set HTTPs port [" + httpsPort + "] for fraud detection server")
+ return httpStubConfiguration
+ .httpsPort(httpsPort)
+ }
+ return httpStubConfiguration
+ }
+ }
+ // end::wireMockHttpServerStubConfigurer[]
}
// end::test[]
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerOptionsBuilderSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerOptionsBuilderSpec.groovy
index 6c1f5db41e..e75274abd1 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerOptionsBuilderSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerOptionsBuilderSpec.groovy
@@ -16,22 +16,18 @@
package org.springframework.cloud.contract.stubrunner.spring
-
import spock.lang.Specification
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.context.annotation.Configuration
import org.springframework.test.context.ActiveProfiles
-import org.springframework.test.context.ContextConfiguration
/**
* @author Marcin Grzejszczak
*/
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
-@SpringBootTest(properties = ['some.property1=org.springframework.cloud.contract.verifier.stubs:loanIssuance'])
+@SpringBootTest(classes = Config, properties = ['some.property1=org.springframework.cloud.contract.verifier.stubs:loanIssuance'])
@AutoConfigureStubRunner
@ActiveProfiles("test-with-placeholders")
class StubRunnerOptionsBuilderSpec extends Specification {
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudAutoConfigurationSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudAutoConfigurationSpec.groovy
index bfb079054d..aafcf1e6ff 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudAutoConfigurationSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudAutoConfigurationSpec.groovy
@@ -16,13 +16,11 @@
package org.springframework.cloud.contract.stubrunner.spring.cloud
-import org.junit.AfterClass
-import org.junit.BeforeClass
import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
+import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.client.loadbalancer.LoadBalanced
import org.springframework.cloud.consul.ConsulAutoConfiguration
import org.springframework.cloud.contract.stubrunner.StubFinder
@@ -35,62 +33,64 @@ import org.springframework.cloud.zookeeper.ZookeeperAutoConfiguration
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.test.context.ActiveProfiles
-import org.springframework.test.context.ContextConfiguration
import org.springframework.web.client.RestTemplate
+
/**
* @author Marcin Grzejszczak
*/
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
+@SpringBootTest(classes = Config)
@ActiveProfiles("cloudtest")
// tag::autoconfigure[]
@AutoConfigureStubRunner(
- ids = ["org.springframework.cloud.contract.verifier.stubs:loanIssuance",
- "org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer",
- "org.springframework.cloud.contract.verifier.stubs:bootService"],
- stubsMode = StubRunnerProperties.StubsMode.REMOTE,
- repositoryRoot = "classpath:m2repo/repository/")
+ ids = ["org.springframework.cloud.contract.verifier.stubs:loanIssuance",
+ "org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer",
+ "org.springframework.cloud.contract.verifier.stubs:bootService"],
+ stubsMode = StubRunnerProperties.StubsMode.REMOTE,
+ repositoryRoot = "classpath:m2repo/repository/")
// end::autoconfigure[]
class StubRunnerSpringCloudAutoConfigurationSpec extends Specification {
- @Autowired
- StubFinder stubFinder
- @Autowired
- @LoadBalanced
- RestTemplate restTemplate
- @Autowired
- LoadBalancerClientFactory loadBalancerClientFactory;
+ @Autowired
+ StubFinder stubFinder
+ @Autowired
+ @LoadBalanced
+ RestTemplate restTemplate
+ @Autowired
+ LoadBalancerClientFactory loadBalancerClientFactory;
- @BeforeClass
- @AfterClass
- static void setupProps() {
- System.clearProperty("stubrunner.repository.root")
- System.clearProperty("stubrunner.classifier")
- }
+ void setupSpec() {
+ System.clearProperty("stubrunner.repository.root")
+ System.clearProperty("stubrunner.classifier")
+ }
- def setup() {
- assert loadBalancerClientFactory instanceof StubRunnerLoadBalancerClientFactory
- }
+ void cleanupSpec() {
+ setupSpec()
+ }
- // tag::test[]
- def 'should make service discovery work'() {
- expect: 'WireMocks are running'
- "${stubFinder.findStubUrl('loanIssuance').toString()}/name".toURL().text == 'loanIssuance'
- "${stubFinder.findStubUrl('fraudDetectionServer').toString()}/name".toURL().text == 'fraudDetectionServer'
- and: 'Stubs can be reached via load service discovery'
- restTemplate.getForObject('http://loanIssuance/name', String) == 'loanIssuance'
- restTemplate.getForObject('http://someNameThatShouldMapFraudDetectionServer/name', String) == 'fraudDetectionServer'
- }
- // end::test[]
+ def setup() {
+ assert loadBalancerClientFactory instanceof StubRunnerLoadBalancerClientFactory
+ }
- @Configuration
- @EnableAutoConfiguration(exclude = [EurekaClientAutoConfiguration,
- ConsulAutoConfiguration, ZookeeperAutoConfiguration])
- static class Config {
+ // tag::test[]
+ def 'should make service discovery work'() {
+ expect: 'WireMocks are running'
+ "${stubFinder.findStubUrl('loanIssuance').toString()}/name".toURL().text == 'loanIssuance'
+ "${stubFinder.findStubUrl('fraudDetectionServer').toString()}/name".toURL().text == 'fraudDetectionServer'
+ and: 'Stubs can be reached via load service discovery'
+ restTemplate.getForObject('http://loanIssuance/name', String) == 'loanIssuance'
+ restTemplate.getForObject('http://someNameThatShouldMapFraudDetectionServer/name', String) == 'fraudDetectionServer'
+ }
+ // end::test[]
- @Bean
- @LoadBalanced
- RestTemplate restTemplate() {
- return new RestTemplate()
- }
- }
+ @Configuration
+ @EnableAutoConfiguration(exclude = [EurekaClientAutoConfiguration,
+ ConsulAutoConfiguration, ZookeeperAutoConfiguration])
+ static class Config {
+
+ @Bean
+ @LoadBalanced
+ RestTemplate restTemplate() {
+ return new RestTemplate()
+ }
+ }
}
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudReactiveAutoConfigurationSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudReactiveAutoConfigurationSpec.groovy
index 4e33d8ed31..1cd17eacab 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudReactiveAutoConfigurationSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerSpringCloudReactiveAutoConfigurationSpec.groovy
@@ -22,7 +22,7 @@ import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
+import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.client.ServiceInstance
import org.springframework.cloud.client.discovery.ReactiveDiscoveryClient
import org.springframework.cloud.client.loadbalancer.LoadBalanced
@@ -37,61 +37,61 @@ import org.springframework.cloud.zookeeper.ZookeeperAutoConfiguration
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.test.context.ActiveProfiles
-import org.springframework.test.context.ContextConfiguration
import org.springframework.web.client.RestTemplate
+
/**
* @author Marcin Grzejszczak
*/
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
+@SpringBootTest(classes = Config)
@ActiveProfiles("cloudtest")
@AutoConfigureStubRunner(
- ids = ["org.springframework.cloud.contract.verifier.stubs:loanIssuance",
- "org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer",
- "org.springframework.cloud.contract.verifier.stubs:bootService"],
- stubsMode = StubRunnerProperties.StubsMode.REMOTE,
- repositoryRoot = "classpath:m2repo/repository/")
+ ids = ["org.springframework.cloud.contract.verifier.stubs:loanIssuance",
+ "org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer",
+ "org.springframework.cloud.contract.verifier.stubs:bootService"],
+ stubsMode = StubRunnerProperties.StubsMode.REMOTE,
+ repositoryRoot = "classpath:m2repo/repository/")
class StubRunnerSpringCloudReactiveAutoConfigurationSpec extends Specification {
- @Autowired
- StubFinder stubFinder
- @Autowired
- ReactiveDiscoveryClient reactiveDiscoveryClient;
- @Autowired
- LoadBalancerClientFactory loadBalancerClientFactory;
- RestTemplate restTemplate = new RestTemplate()
+ @Autowired
+ StubFinder stubFinder
+ @Autowired
+ ReactiveDiscoveryClient reactiveDiscoveryClient;
+ @Autowired
+ LoadBalancerClientFactory loadBalancerClientFactory;
+ RestTemplate restTemplate = new RestTemplate()
- @BeforeClass
- @AfterClass
- static void setupProps() {
- System.clearProperty("stubrunner.repository.root")
- System.clearProperty("stubrunner.classifier")
- }
+ @BeforeClass
+ @AfterClass
+ static void setupProps() {
+ System.clearProperty("stubrunner.repository.root")
+ System.clearProperty("stubrunner.classifier")
+ }
- def setup() {
- assert loadBalancerClientFactory instanceof StubRunnerLoadBalancerClientFactory
- }
+ def setup() {
+ assert loadBalancerClientFactory instanceof StubRunnerLoadBalancerClientFactory
+ }
- // tag::test[]
- def 'should make service discovery work'() {
- expect: 'WireMocks are running'
- "${stubFinder.findStubUrl('loanIssuance').toString()}/name".toURL().text == 'loanIssuance'
- "${stubFinder.findStubUrl('fraudDetectionServer').toString()}/name".toURL().text == 'fraudDetectionServer'
- and: 'Stubs can be reached via load service discovery'
- ServiceInstance loanIssuance = reactiveDiscoveryClient.getInstances('loanIssuance').blockFirst()
- restTemplate.getForObject(loanIssuance.uri.toString() + '/name', String) == 'loanIssuance'
- ServiceInstance fraudDetection = reactiveDiscoveryClient.getInstances('someNameThatShouldMapFraudDetectionServer').blockFirst()
- restTemplate.getForObject(fraudDetection.uri.toString() + '/name', String)== 'fraudDetectionServer'
- }
- // end::test[]
+ // tag::test[]
+ def 'should make service discovery work'() {
+ expect: 'WireMocks are running'
+ "${stubFinder.findStubUrl('loanIssuance').toString()}/name".toURL().text == 'loanIssuance'
+ "${stubFinder.findStubUrl('fraudDetectionServer').toString()}/name".toURL().text == 'fraudDetectionServer'
+ and: 'Stubs can be reached via load service discovery'
+ ServiceInstance loanIssuance = reactiveDiscoveryClient.getInstances('loanIssuance').blockFirst()
+ restTemplate.getForObject(loanIssuance.uri.toString() + '/name', String) == 'loanIssuance'
+ ServiceInstance fraudDetection = reactiveDiscoveryClient.getInstances('someNameThatShouldMapFraudDetectionServer').blockFirst()
+ restTemplate.getForObject(fraudDetection.uri.toString() + '/name', String) == 'fraudDetectionServer'
+ }
+ // end::test[]
- @Configuration
- @EnableAutoConfiguration(exclude = [EurekaClientAutoConfiguration,
- ConsulAutoConfiguration, ZookeeperAutoConfiguration])
- static class Config {
+ @Configuration
+ @EnableAutoConfiguration(exclude = [EurekaClientAutoConfiguration,
+ ConsulAutoConfiguration, ZookeeperAutoConfiguration])
+ static class Config {
- @Bean
- @LoadBalanced
- RestTemplate restTemplate() {
- return new RestTemplate()
- }
- }
+ @Bean
+ @LoadBalanced
+ RestTemplate restTemplate() {
+ return new RestTemplate()
+ }
+ }
}
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerSpec.groovy
index a678de8c25..ed4c266fb5 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerSpec.groovy
@@ -42,12 +42,11 @@ import org.springframework.test.context.ContextConfiguration
* @author Marcin Grzejszczak
*/
// tag::test[]
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
-@SpringBootTest(properties = ["spring.application.name=bar-consumer"])
+@SpringBootTest(classes = Config, properties = ["spring.application.name=bar-consumer"])
@AutoConfigureStubRunner(ids = "org.springframework.cloud.contract.verifier.stubs:producerWithMultipleConsumers",
- repositoryRoot = "classpath:m2repo/repository/",
- stubsMode = StubRunnerProperties.StubsMode.REMOTE,
- stubsPerConsumer = true)
+ repositoryRoot = "classpath:m2repo/repository/",
+ stubsMode = StubRunnerProperties.StubsMode.REMOTE,
+ stubsPerConsumer = true)
@ActiveProfiles("streamconsumer")
class StubRunnerStubsPerConsumerSpec extends Specification {
// end::test[]
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerWithConsumerNameSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerWithConsumerNameSpec.groovy
index 5850dfbff2..30250fbe39 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerWithConsumerNameSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/StubRunnerStubsPerConsumerWithConsumerNameSpec.groovy
@@ -23,7 +23,6 @@ import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.boot.autoconfigure.ImportAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.web.client.TestRestTemplate
import org.springframework.cloud.contract.stubrunner.StubFinder
@@ -37,18 +36,16 @@ import org.springframework.core.env.Environment
import org.springframework.http.ResponseEntity
import org.springframework.messaging.Message
import org.springframework.test.context.ActiveProfiles
-import org.springframework.test.context.ContextConfiguration
/**
* @author Marcin Grzejszczak
*/
// tag::test[]
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
-@SpringBootTest
+@SpringBootTest(classes = Config)
@AutoConfigureStubRunner(ids = "org.springframework.cloud.contract.verifier.stubs:producerWithMultipleConsumers",
- repositoryRoot = "classpath:m2repo/repository/",
- consumerName = "foo-consumer",
- stubsMode = StubRunnerProperties.StubsMode.REMOTE,
- stubsPerConsumer = true)
+ repositoryRoot = "classpath:m2repo/repository/",
+ consumerName = "foo-consumer",
+ stubsMode = StubRunnerProperties.StubsMode.REMOTE,
+ stubsPerConsumer = true)
@ActiveProfiles("streamconsumer")
class StubRunnerStubsPerConsumerWithConsumerNameSpec extends Specification {
// end::test[]
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfigurationSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfigurationSpec.groovy
index 3fd6a2e2a1..d2f248332a 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfigurationSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfigurationSpec.groovy
@@ -18,8 +18,7 @@ package org.springframework.cloud.contract.stubrunner.spring.cloud.consul
import com.ecwid.consul.v1.ConsulClient
import com.ecwid.consul.v1.agent.model.NewService
-import org.junit.AfterClass
-import org.junit.BeforeClass
+import groovy.transform.CompileStatic
import org.mockito.ArgumentMatcher
import spock.lang.Specification
@@ -41,8 +40,7 @@ import static org.mockito.Mockito.mock
/**
* @author Marcin Grzejszczak
*/
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
+@SpringBootTest(classes = Config, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
properties = ["eureka.client.enabled=false",
"spring.cloud.zookeeper.enabled=false",
"stubrunner.cloud.stubbed.discovery.enabled=false",
@@ -51,24 +49,25 @@ import static org.mockito.Mockito.mock
"stubrunner.cloud.consul.enabled=true",
"stubrunner.cloud.zookeeper.enabled=false",
"debug=true"])
-@AutoConfigureStubRunner(ids =
- ["org.springframework.cloud.contract.verifier.stubs:loanIssuance",
- "org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer",
- "org.springframework.cloud.contract.verifier.stubs:bootService"],
- stubsMode = StubRunnerProperties.StubsMode.REMOTE,
- repositoryRoot = "classpath:m2repo/repository/")
+@AutoConfigureStubRunner(ids = ["org.springframework.cloud.contract.verifier.stubs:loanIssuance",
+ "org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer",
+ "org.springframework.cloud.contract.verifier.stubs:bootService"] ,
+stubsMode = StubRunnerProperties.StubsMode.REMOTE ,
+repositoryRoot = "classpath:m2repo/repository/" )
class StubRunnerSpringCloudConsulAutoConfigurationSpec extends Specification {
@Autowired
ConsulClient client
- @BeforeClass
- @AfterClass
- static void setupProps() {
+ void setupSpec() {
System.clearProperty("stubrunner.stubs.repository.root")
System.clearProperty("stubrunner.stubs.classifier")
}
+ void cleanupSpec() {
+ setupSpec()
+ }
+
def 'should make service discovery work for #serviceName'() {
given:
final String expectedId = serviceName.split(':')[0]
@@ -97,6 +96,7 @@ class StubRunnerSpringCloudConsulAutoConfigurationSpec extends Specification {
}
}
+ @CompileStatic
@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
diff --git a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionCustomMessageVerifierTests.java b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionCustomMessageVerifierTests.java
index 87e74ada09..6e78324a4b 100644
--- a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionCustomMessageVerifierTests.java
+++ b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionCustomMessageVerifierTests.java
@@ -24,6 +24,7 @@ import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
+import org.springframework.cloud.contract.stubrunner.junit4.StubRunnerRuleCustomPortJUnitTest;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
import org.springframework.cloud.contract.verifier.converter.YamlContract;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
diff --git a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionExceptionThrowingTests.java b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionExceptionThrowingTests.java
index 913884e019..1a823c1fa3 100644
--- a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionExceptionThrowingTests.java
+++ b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionExceptionThrowingTests.java
@@ -21,6 +21,7 @@ import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
+import org.springframework.cloud.contract.stubrunner.junit4.StubRunnerRuleCustomPortJUnitTest;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
import static org.junit.jupiter.api.Assertions.assertThrows;
diff --git a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionTests.java b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionTests.java
index 97037f473e..3ad4384d9f 100644
--- a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionTests.java
+++ b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5ExtensionTests.java
@@ -24,6 +24,7 @@ import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
+import org.springframework.cloud.contract.stubrunner.junit4.StubRunnerRuleJUnitTest;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5MethodExtensionTests.java b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5MethodExtensionTests.java
index d9326fa7c7..7becd25503 100644
--- a/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5MethodExtensionTests.java
+++ b/spring-cloud-contract-stub-runner/src/test/java/org/springframework/cloud/contract/stubrunner/junit/StubRunnerJUnit5MethodExtensionTests.java
@@ -24,6 +24,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
+import org.springframework.cloud.contract.stubrunner.junit4.StubRunnerRuleJUnitTest;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/tests/samples-messaging-amqp/src/test/groovy/com/example/AmqpMessagingApplicationSpec.groovy b/tests/samples-messaging-amqp/src/test/groovy/com/example/AmqpMessagingApplicationSpec.groovy
index c9bab99827..0ecb69b07f 100644
--- a/tests/samples-messaging-amqp/src/test/groovy/com/example/AmqpMessagingApplicationSpec.groovy
+++ b/tests/samples-messaging-amqp/src/test/groovy/com/example/AmqpMessagingApplicationSpec.groovy
@@ -26,23 +26,20 @@ import spock.lang.Issue
import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.context.SpringBootContextLoader
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.spec.Contract
import org.springframework.cloud.contract.verifier.messaging.boot.AutoConfigureMessageVerifier
import org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessage
import org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessaging
import org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierObjectMapper
-import org.springframework.test.context.ContextConfiguration
import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson
import static org.assertj.core.api.Assertions.assertThat
import static org.springframework.cloud.contract.verifier.messaging.util.ContractVerifierMessagingUtil.headers
// Context configuration would end up in base class
-@ContextConfiguration(classes = [AmqpMessagingApplication], loader = SpringBootContextLoader)
@AutoConfigureMessageVerifier
-@SpringBootTest(properties = "stubrunner.amqp.enabled=true")
+@SpringBootTest(classes = AmqpMessagingApplication, properties = "stubrunner.amqp.enabled=true")
class AmqpMessagingApplicationSpec extends Specification {
// ALL CASES
diff --git a/tests/samples-messaging-camel/src/test/groovy/com/example/CamelMessagingApplicationSpec.groovy b/tests/samples-messaging-camel/src/test/groovy/com/example/CamelMessagingApplicationSpec.groovy
index 0f50f619eb..155ea8121a 100644
--- a/tests/samples-messaging-camel/src/test/groovy/com/example/CamelMessagingApplicationSpec.groovy
+++ b/tests/samples-messaging-camel/src/test/groovy/com/example/CamelMessagingApplicationSpec.groovy
@@ -23,12 +23,12 @@ import com.jayway.jsonpath.JsonPath
import com.toomuchcoding.jsonassert.JsonAssertion
import org.apache.camel.Message
import org.apache.camel.model.ModelCamelContext
-import org.junit.BeforeClass
import spock.lang.Specification
import spock.util.concurrent.PollingConditions
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootContextLoader
+import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.spec.Contract
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
import org.springframework.cloud.contract.verifier.messaging.boot.AutoConfigureMessageVerifier
@@ -39,8 +39,8 @@ import org.springframework.test.context.ContextConfiguration
* SPIKE ON TESTS FROM NOTES IN MessagingSpec
*/
// Context configuration would end up in base class
-@ContextConfiguration(classes = [CamelMessagingApplication], loader = SpringBootContextLoader)
@AutoConfigureMessageVerifier
+@SpringBootTest(classes = CamelMessagingApplication)
class CamelMessagingApplicationSpec extends Specification {
// ALL CASES
@@ -53,8 +53,7 @@ class CamelMessagingApplicationSpec extends Specification {
ContractVerifierObjectMapper contractVerifierObjectMapper = new ContractVerifierObjectMapper()
- @BeforeClass
- static void init() {
+ void setupSpec() {
System.setProperty("org.apache.activemq.SERIALIZABLE_PACKAGES", "*")
}
diff --git a/tests/samples-messaging-integration/src/test/groovy/com/example/IntegrationMessagingApplicationSpec.groovy b/tests/samples-messaging-integration/src/test/groovy/com/example/IntegrationMessagingApplicationSpec.groovy
index 01fd189cfc..4d527b53e3 100644
--- a/tests/samples-messaging-integration/src/test/groovy/com/example/IntegrationMessagingApplicationSpec.groovy
+++ b/tests/samples-messaging-integration/src/test/groovy/com/example/IntegrationMessagingApplicationSpec.groovy
@@ -24,17 +24,16 @@ import com.toomuchcoding.jsonassert.JsonAssertion
import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.context.SpringBootContextLoader
+import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.spec.Contract
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
import org.springframework.cloud.contract.verifier.messaging.boot.AutoConfigureMessageVerifier
import org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierObjectMapper
import org.springframework.messaging.Message
-import org.springframework.test.context.ContextConfiguration
// Context configuration would end up in base class
-@ContextConfiguration(classes = [IntegrationMessagingApplication], loader = SpringBootContextLoader)
@AutoConfigureMessageVerifier
+@SpringBootTest(classes = IntegrationMessagingApplication)
class IntegrationMessagingApplicationSpec extends Specification {
// ALL CASES
diff --git a/tests/samples-messaging-jms/src/test/groovy/com/example/JmsMessagingApplicationSpec.groovy b/tests/samples-messaging-jms/src/test/groovy/com/example/JmsMessagingApplicationSpec.groovy
index 7f6a3a0eb8..8488090f62 100644
--- a/tests/samples-messaging-jms/src/test/groovy/com/example/JmsMessagingApplicationSpec.groovy
+++ b/tests/samples-messaging-jms/src/test/groovy/com/example/JmsMessagingApplicationSpec.groovy
@@ -23,12 +23,11 @@ import javax.jms.Message
import com.jayway.jsonpath.DocumentContext
import com.jayway.jsonpath.JsonPath
import com.toomuchcoding.jsonassert.JsonAssertion
-import org.junit.BeforeClass
import spock.lang.Specification
import spock.util.concurrent.PollingConditions
import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.context.SpringBootContextLoader
+import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.spec.Contract
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
import org.springframework.cloud.contract.verifier.messaging.boot.AutoConfigureMessageVerifier
@@ -38,137 +37,138 @@ import org.springframework.cloud.contract.verifier.messaging.internal.ContractVe
import org.springframework.jms.core.JmsTemplate
import org.springframework.jms.core.MessagePostProcessor
import org.springframework.test.annotation.DirtiesContext
-import org.springframework.test.context.ContextConfiguration
/**
* SPIKE ON TESTS FROM NOTES IN MessagingSpec
*/
// Context configuration would end up in base class
-@ContextConfiguration(classes = [JmsMessagingApplication], loader = SpringBootContextLoader)
@AutoConfigureMessageVerifier
+@SpringBootTest(classes = JmsMessagingApplication)
class JmsMessagingApplicationSpec extends Specification {
- // ALL CASES
- @Autowired
- JmsTemplate jmsTemplate
- @Autowired
- BookDeleter bookDeleter
- @Inject MessageVerifier messageVerifier
- @Inject ContractVerifierMessaging contractVerifierMessaging
- @Inject ContractVerifierObjectMapper contractVerifierObjectMapper
+ // ALL CASES
+ @Autowired
+ JmsTemplate jmsTemplate
+ @Autowired
+ BookDeleter bookDeleter
+ @Inject
+ MessageVerifier messageVerifier
+ @Inject
+ ContractVerifierMessaging contractVerifierMessaging
+ @Inject
+ ContractVerifierObjectMapper contractVerifierObjectMapper
- @BeforeClass
- static void init() {
- System.setProperty("org.apache.activemq.SERIALIZABLE_PACKAGES", "*")
- System.setProperty("debug", "true")
- }
+ void setupSpec() {
+ System.setProperty("org.apache.activemq.SERIALIZABLE_PACKAGES", "*")
+ System.setProperty("debug", "true")
+ }
- def "should work for triggered based messaging"() {
- given:
- Contract.make {
- label 'some_label'
- input {
- triggeredBy('bookReturnedTriggered()')
- }
- outputMessage {
- sentTo('output')
- body('''{ "bookName" : "foo" }''')
- headers {
- header('BOOK-NAME', 'foo')
- }
- }
- }
- // generated test should look like this:
- when:
- bookReturnedTriggered()
- then:
- ContractVerifierMessage response = contractVerifierMessaging.receive('output')
- response.getHeader('BOOK-NAME') == 'foo'
- and:
- DocumentContext parsedJson = JsonPath.
- parse(contractVerifierObjectMapper.writeValueAsString(response.getPayload()))
- JsonAssertion.assertThat(parsedJson).field('bookName').isEqualTo('foo')
- }
+ def "should work for triggered based messaging"() {
+ given:
+ Contract.make {
+ label 'some_label'
+ input {
+ triggeredBy('bookReturnedTriggered()')
+ }
+ outputMessage {
+ sentTo('output')
+ body('''{ "bookName" : "foo" }''')
+ headers {
+ header('BOOK-NAME', 'foo')
+ }
+ }
+ }
+ // generated test should look like this:
+ when:
+ bookReturnedTriggered()
+ then:
+ ContractVerifierMessage response = contractVerifierMessaging.receive('output')
+ response.getHeader('BOOK-NAME') == 'foo'
+ and:
+ DocumentContext parsedJson = JsonPath.
+ parse(contractVerifierObjectMapper.writeValueAsString(response.getPayload()))
+ JsonAssertion.assertThat(parsedJson).field('bookName').isEqualTo('foo')
+ }
- @DirtiesContext
- def "should generate tests triggered by a message"() {
- given:
- Contract.make {
- label 'some_label'
- input {
- messageFrom('input2')
- messageBody([
- bookName: 'foo'
- ])
- messageHeaders {
- header('sample', 'header')
- }
- }
- outputMessage {
- sentTo('output2')
- body([
- bookName: 'foo'
- ])
- headers {
- header('BOOK-NAME', 'foo')
- }
- }
- }
- // generated test should look like this:
- when:
- messageVerifier.send(
- contractVerifierObjectMapper.writeValueAsString([bookName: 'foo']),
- [sample: 'header'], 'input2')
- then:
- ContractVerifierMessage response = contractVerifierMessaging.receive('output2')
- response.getHeader('BOOK-NAME') == 'foo'
- and:
- DocumentContext parsedJson = JsonPath.
- parse(contractVerifierObjectMapper.writeValueAsString(response.getPayload()))
- JsonAssertion.assertThat(parsedJson).field('bookName').isEqualTo('foo')
- }
+ @DirtiesContext
+ def "should generate tests triggered by a message"() {
+ given:
+ Contract.make {
+ label 'some_label'
+ input {
+ messageFrom('input2')
+ messageBody([
+ bookName: 'foo'
+ ])
+ messageHeaders {
+ header('sample', 'header')
+ }
+ }
+ outputMessage {
+ sentTo('output2')
+ body([
+ bookName: 'foo'
+ ])
+ headers {
+ header('BOOK-NAME', 'foo')
+ }
+ }
+ }
+ // generated test should look like this:
+ when:
+ messageVerifier.send(
+ contractVerifierObjectMapper.writeValueAsString([bookName: 'foo']),
+ [sample: 'header'], 'input2')
+ then:
+ ContractVerifierMessage response = contractVerifierMessaging.receive('output2')
+ response.getHeader('BOOK-NAME') == 'foo'
+ and:
+ DocumentContext parsedJson = JsonPath.
+ parse(contractVerifierObjectMapper.writeValueAsString(response.getPayload()))
+ JsonAssertion.assertThat(parsedJson).field('bookName').isEqualTo('foo')
+ }
- def "should generate tests without destination, triggered by a message"() {
- given:
- Contract.make {
- label 'some_label'
- input {
- messageFrom('delete')
- messageBody([
- bookName: 'foo'
- ])
- messageHeaders {
- header('sample', 'header')
- }
- assertThat('bookWasDeleted()')
- }
- }
- // generated test should look like this:
- when:
- messageVerifier.
- send(contractVerifierObjectMapper.writeValueAsString([bookName: 'foo']),
- [sample: 'header'], 'delete')
- then:
- noExceptionThrown()
- bookWasDeleted()
- }
+ def "should generate tests without destination, triggered by a message"() {
+ given:
+ Contract.make {
+ label 'some_label'
+ input {
+ messageFrom('delete')
+ messageBody([
+ bookName: 'foo'
+ ])
+ messageHeaders {
+ header('sample', 'header')
+ }
+ assertThat('bookWasDeleted()')
+ }
+ }
+ // generated test should look like this:
+ when:
+ messageVerifier.
+ send(contractVerifierObjectMapper.writeValueAsString([bookName: 'foo']),
+ [sample: 'header'], 'delete')
+ then:
+ noExceptionThrown()
+ bookWasDeleted()
+ }
- void bookReturnedTriggered() {
- jmsTemplate.convertAndSend("output", '''{"bookName" : "foo" }''', new MessagePostProcessor() {
- @Override
- Message postProcessMessage(Message message) throws JMSException {
- message.setStringProperty("BOOK-NAME", "foo")
- return message
- }
- })
- }
+ void bookReturnedTriggered() {
+ jmsTemplate.convertAndSend("output", '''{"bookName" : "foo" }''', new MessagePostProcessor() {
+ @Override
+ Message postProcessMessage(Message message) throws JMSException {
+ message.setStringProperty("BOOK-NAME", "foo")
+ return message
+ }
+ })
+ }
- PollingConditions pollingConditions = new PollingConditions()
+ PollingConditions pollingConditions = new PollingConditions()
- void bookWasDeleted() {
- pollingConditions.eventually {
- assert bookDeleter.bookSuccessfulyDeleted.get()
- }
- }
+ void bookWasDeleted() {
+ pollingConditions.eventually {
+ assert bookDeleter.bookSuccessfulyDeleted.get()
+ }
+ }
}
diff --git a/tests/samples-messaging-stream/src/test/groovy/com/example/StreamMessagingApplicationSpec.groovy b/tests/samples-messaging-stream/src/test/groovy/com/example/StreamMessagingApplicationSpec.groovy
index d07277f342..20c28c77f9 100644
--- a/tests/samples-messaging-stream/src/test/groovy/com/example/StreamMessagingApplicationSpec.groovy
+++ b/tests/samples-messaging-stream/src/test/groovy/com/example/StreamMessagingApplicationSpec.groovy
@@ -26,7 +26,6 @@ import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.boot.autoconfigure.ImportAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.spec.Contract
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
@@ -35,134 +34,132 @@ import org.springframework.cloud.contract.verifier.messaging.internal.ContractVe
import org.springframework.cloud.stream.binder.test.TestChannelBinderConfiguration
import org.springframework.context.annotation.Configuration
import org.springframework.messaging.Message
-import org.springframework.test.context.ContextConfiguration
/**
* SPIKE ON TESTS FROM NOTES IN MessagingSpec
*/
// Context configuration would end up in base class
-@ContextConfiguration(classes = [Config, StreamMessagingApplication], loader = SpringBootContextLoader)
-@SpringBootTest(properties = "debug=true")
+@SpringBootTest(classes = [Config, StreamMessagingApplication], properties = "debug=true")
@AutoConfigureMessageVerifier
class StreamMessagingApplicationSpec extends Specification {
- // ALL CASES
- @Inject
- MessageVerifier> contractVerifierMessaging
- ContractVerifierObjectMapper contractVerifierObjectMapper = new ContractVerifierObjectMapper()
+ // ALL CASES
+ @Inject
+ MessageVerifier> contractVerifierMessaging
+ ContractVerifierObjectMapper contractVerifierObjectMapper = new ContractVerifierObjectMapper()
- def "should work for triggered based messaging"() {
- given:
- def dsl = Contract.make {
- label 'some_label'
- input {
- triggeredBy('bookReturnedTriggered()')
- }
- outputMessage {
- sentTo('bookReturned')
- body('''{ "bookName" : "foo" }''')
- headers {
- header('BOOK-NAME', 'foo')
- }
- }
- }
- // generated test should look like this:
- when:
- bookReturnedTriggered()
- then:
- def response = contractVerifierMessaging.receive('bookReturned')
- response.headers.get('BOOK-NAME') == 'foo'
- and:
- DocumentContext parsedJson = JsonPath.
- parse(contractVerifierObjectMapper.writeValueAsString(response.payload))
- JsonAssertion.assertThat(parsedJson).field('bookName').isEqualTo('foo')
- }
+ def "should work for triggered based messaging"() {
+ given:
+ def dsl = Contract.make {
+ label 'some_label'
+ input {
+ triggeredBy('bookReturnedTriggered()')
+ }
+ outputMessage {
+ sentTo('bookReturned')
+ body('''{ "bookName" : "foo" }''')
+ headers {
+ header('BOOK-NAME', 'foo')
+ }
+ }
+ }
+ // generated test should look like this:
+ when:
+ bookReturnedTriggered()
+ then:
+ def response = contractVerifierMessaging.receive('bookReturned')
+ response.headers.get('BOOK-NAME') == 'foo'
+ and:
+ DocumentContext parsedJson = JsonPath.
+ parse(contractVerifierObjectMapper.writeValueAsString(response.payload))
+ JsonAssertion.assertThat(parsedJson).field('bookName').isEqualTo('foo')
+ }
- def "should generate tests triggered by a message"() {
- given:
- def dsl = Contract.make {
- label 'some_label'
- input {
- messageFrom('inputDestination')
- messageBody([
- bookName: 'foo'
- ])
- messageHeaders {
- header('sample', 'header')
- }
- }
- outputMessage {
- sentTo('bookReturned')
- body([
- bookName: 'foo'
- ])
- headers {
- header('BOOK-NAME', 'foo')
- }
- }
- }
+ def "should generate tests triggered by a message"() {
+ given:
+ def dsl = Contract.make {
+ label 'some_label'
+ input {
+ messageFrom('inputDestination')
+ messageBody([
+ bookName: 'foo'
+ ])
+ messageHeaders {
+ header('sample', 'header')
+ }
+ }
+ outputMessage {
+ sentTo('bookReturned')
+ body([
+ bookName: 'foo'
+ ])
+ headers {
+ header('BOOK-NAME', 'foo')
+ }
+ }
+ }
- // generated test should look like this:
+ // generated test should look like this:
- when:
- contractVerifierMessaging.send(
- contractVerifierObjectMapper.writeValueAsString([bookName: 'foo']),
- [sample: 'header'], 'inputDestination')
- then:
- def response = contractVerifierMessaging.receive('bookReturned')
- response.headers.get('BOOK-NAME') == 'foo'
- and:
- DocumentContext parsedJson = JsonPath.
- parse(contractVerifierObjectMapper.writeValueAsString(response.payload))
- JsonAssertion.assertThat(parsedJson).field('bookName').isEqualTo('foo')
- }
+ when:
+ contractVerifierMessaging.send(
+ contractVerifierObjectMapper.writeValueAsString([bookName: 'foo']),
+ [sample: 'header'], 'inputDestination')
+ then:
+ def response = contractVerifierMessaging.receive('bookReturned')
+ response.headers.get('BOOK-NAME') == 'foo'
+ and:
+ DocumentContext parsedJson = JsonPath.
+ parse(contractVerifierObjectMapper.writeValueAsString(response.payload))
+ JsonAssertion.assertThat(parsedJson).field('bookName').isEqualTo('foo')
+ }
- def "should generate tests without destination, triggered by a message"() {
- given:
- def dsl = Contract.make {
- label 'some_label'
- input {
- messageFrom("bookDeleted")
- messageBody([
- bookName: 'foo'
- ])
- messageHeaders {
- header('sample', 'header')
- }
- assertThat('bookWasDeleted()')
- }
- }
+ def "should generate tests without destination, triggered by a message"() {
+ given:
+ def dsl = Contract.make {
+ label 'some_label'
+ input {
+ messageFrom("bookDeleted")
+ messageBody([
+ bookName: 'foo'
+ ])
+ messageHeaders {
+ header('sample', 'header')
+ }
+ assertThat('bookWasDeleted()')
+ }
+ }
- // generated test should look like this:
+ // generated test should look like this:
- when:
- contractVerifierMessaging.
- send(contractVerifierObjectMapper.writeValueAsString([bookName: 'foo']),
- [sample: 'header'], "bookDeleted")
- then:
- noExceptionThrown()
- bookWasDeleted()
- }
+ when:
+ contractVerifierMessaging.
+ send(contractVerifierObjectMapper.writeValueAsString([bookName: 'foo']),
+ [sample: 'header'], "bookDeleted")
+ then:
+ noExceptionThrown()
+ bookWasDeleted()
+ }
- // BASE CLASS WOULD HAVE THIS:
+ // BASE CLASS WOULD HAVE THIS:
- @Autowired
- BookService bookService
- @Autowired
- BookDeletedListener bookDeletedListener
+ @Autowired
+ BookService bookService
+ @Autowired
+ BookDeletedListener bookDeletedListener
- void bookReturnedTriggered() {
- bookService.returnBook(new BookReturned("foo"))
- }
+ void bookReturnedTriggered() {
+ bookService.returnBook(new BookReturned("foo"))
+ }
- void bookWasDeleted() {
- assert bookDeletedListener.bookSuccessfulyDeleted.get()
- }
+ void bookWasDeleted() {
+ assert bookDeletedListener.bookSuccessfulyDeleted.get()
+ }
- @Configuration
- @EnableAutoConfiguration
- @ImportAutoConfiguration(TestChannelBinderConfiguration)
- static class Config {
+ @Configuration
+ @EnableAutoConfiguration
+ @ImportAutoConfiguration(TestChannelBinderConfiguration)
+ static class Config {
- }
+ }
}
diff --git a/tests/spring-cloud-contract-stub-runner-amqp/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/amqp/AmqpStubRunnerRabbitListenerSpec.groovy b/tests/spring-cloud-contract-stub-runner-amqp/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/amqp/AmqpStubRunnerRabbitListenerSpec.groovy
index 3f71b64ac4..e878783f4c 100644
--- a/tests/spring-cloud-contract-stub-runner-amqp/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/amqp/AmqpStubRunnerRabbitListenerSpec.groovy
+++ b/tests/spring-cloud-contract-stub-runner-amqp/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/amqp/AmqpStubRunnerRabbitListenerSpec.groovy
@@ -21,14 +21,13 @@ import org.mockito.Captor
import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.context.SpringBootContextLoader
+import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.stubrunner.StubTrigger
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner
import org.springframework.test.context.ActiveProfiles
-import org.springframework.test.context.ContextConfiguration
-@ContextConfiguration(classes = [AmqpMessagingApplication], loader = SpringBootContextLoader)
@AutoConfigureStubRunner
+@SpringBootTest(classes = AmqpMessagingApplication)
@ActiveProfiles("listener")
class AmqpStubRunnerRabbitListenerSpec extends Specification {
diff --git a/tests/spring-cloud-contract-stub-runner-amqp/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/amqp/AmqpStubRunnerSpec.groovy b/tests/spring-cloud-contract-stub-runner-amqp/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/amqp/AmqpStubRunnerSpec.groovy
index 901719e636..8f5fb939ef 100644
--- a/tests/spring-cloud-contract-stub-runner-amqp/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/amqp/AmqpStubRunnerSpec.groovy
+++ b/tests/spring-cloud-contract-stub-runner-amqp/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/amqp/AmqpStubRunnerSpec.groovy
@@ -22,6 +22,7 @@ import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootContextLoader
+import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.mock.mockito.SpyBean
import org.springframework.cloud.contract.spec.Contract
import org.springframework.cloud.contract.stubrunner.StubTrigger
@@ -30,8 +31,8 @@ import org.springframework.test.context.ContextConfiguration
import static org.mockito.BDDMockito.then
-@ContextConfiguration(classes = [AmqpMessagingApplication], loader = SpringBootContextLoader)
@AutoConfigureStubRunner
+@SpringBootTest(classes = AmqpMessagingApplication)
class AmqpStubRunnerSpec extends Specification {
@Autowired
diff --git a/tests/spring-cloud-contract-stub-runner-boot-eureka/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/eureka/StubRunnerSpringCloudEurekaAutoConfigurationSpec.groovy b/tests/spring-cloud-contract-stub-runner-boot-eureka/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/eureka/StubRunnerSpringCloudEurekaAutoConfigurationSpec.groovy
index 68b06d66b5..207c8c44b0 100644
--- a/tests/spring-cloud-contract-stub-runner-boot-eureka/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/eureka/StubRunnerSpringCloudEurekaAutoConfigurationSpec.groovy
+++ b/tests/spring-cloud-contract-stub-runner-boot-eureka/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/eureka/StubRunnerSpringCloudEurekaAutoConfigurationSpec.groovy
@@ -55,20 +55,19 @@ import org.springframework.web.client.RestTemplate
* @author Marcin Grzejszczak
*/
//TODO: Speed up this test somehow (move it out of Spring Cloud Contract core to samples)
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
- properties = ["stubrunner.cloud.eureka.enabled=true",
- "stubrunner.cloud.stubbed.discovery.enabled=false",
- "stubrunner.cloud.ribbon.enabled=false",
- "eureka.client.enabled=true",
- "eureka.instance.leaseRenewalIntervalInSeconds=1",
- "ribbon.ServerListRefreshInterval=100"])
+@SpringBootTest(classes = Config, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
+ properties = ["stubrunner.cloud.eureka.enabled=true",
+ "stubrunner.cloud.stubbed.discovery.enabled=false",
+ "stubrunner.cloud.ribbon.enabled=false",
+ "eureka.client.enabled=true",
+ "eureka.instance.leaseRenewalIntervalInSeconds=1",
+ "ribbon.ServerListRefreshInterval=100"])
@AutoConfigureStubRunner(ids =
- ["org.springframework.cloud.contract.verifier.stubs:loanIssuance",
- "org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer",
- "org.springframework.cloud.contract.verifier.stubs:bootService"],
- repositoryRoot = "classpath:m2repo/repository/",
- stubsMode = StubRunnerProperties.StubsMode.REMOTE)
+["org.springframework.cloud.contract.verifier.stubs:loanIssuance",
+ "org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer",
+ "org.springframework.cloud.contract.verifier.stubs:bootService"] ,
+repositoryRoot = "classpath:m2repo/repository/" ,
+stubsMode = StubRunnerProperties.StubsMode.REMOTE )
class StubRunnerSpringCloudEurekaAutoConfigurationSpec extends Specification {
@Autowired
diff --git a/tests/spring-cloud-contract-stub-runner-boot-zookeeper/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/zookeeper/StubRunnerSpringCloudZookeeperAutoConfigurationSpec.groovy b/tests/spring-cloud-contract-stub-runner-boot-zookeeper/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/zookeeper/StubRunnerSpringCloudZookeeperAutoConfigurationSpec.groovy
index 11d83afdbd..3f39f2cc09 100644
--- a/tests/spring-cloud-contract-stub-runner-boot-zookeeper/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/zookeeper/StubRunnerSpringCloudZookeeperAutoConfigurationSpec.groovy
+++ b/tests/spring-cloud-contract-stub-runner-boot-zookeeper/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/cloud/zookeeper/StubRunnerSpringCloudZookeeperAutoConfigurationSpec.groovy
@@ -17,14 +17,11 @@
package org.springframework.cloud.contract.stubrunner.spring.cloud.zookeeper
import org.apache.curator.test.TestingServer
-import org.junit.AfterClass
-import org.junit.BeforeClass
import spock.lang.Ignore
import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.client.discovery.EnableDiscoveryClient
import org.springframework.cloud.client.loadbalancer.LoadBalanced
@@ -35,23 +32,21 @@ import org.springframework.cloud.zookeeper.ZookeeperProperties
import org.springframework.cloud.zookeeper.discovery.ZookeeperDiscoveryClient
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
-import org.springframework.test.context.ContextConfiguration
import org.springframework.util.SocketUtils
import org.springframework.web.client.RestTemplate
/**
* @author Marcin Grzejszczak
*/
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
- properties = ["stubrunner.cloud.stubbed.discovery.enabled=false",
- "debug=true"])
+@SpringBootTest(classes = Config, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
+ properties = ["stubrunner.cloud.stubbed.discovery.enabled=false",
+ "debug=true"])
@AutoConfigureStubRunner(ids =
- ["org.springframework.cloud.contract.verifier.stubs:loanIssuance",
- "org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer",
- "org.springframework.cloud.contract.verifier.stubs:bootService"],
- repositoryRoot = "classpath:m2repo/repository/",
- stubsMode = StubRunnerProperties.StubsMode.REMOTE)
+["org.springframework.cloud.contract.verifier.stubs:loanIssuance",
+ "org.springframework.cloud.contract.verifier.stubs:fraudDetectionServer",
+ "org.springframework.cloud.contract.verifier.stubs:bootService"] ,
+repositoryRoot = "classpath:m2repo/repository/" ,
+stubsMode = StubRunnerProperties.StubsMode.REMOTE )
class StubRunnerSpringCloudZookeeperAutoConfigurationSpec extends Specification {
@Autowired
@@ -62,13 +57,15 @@ class StubRunnerSpringCloudZookeeperAutoConfigurationSpec extends Specification
@Autowired
ZookeeperDiscoveryClient zookeeperServiceDiscovery
- @BeforeClass
- @AfterClass
- static void setupProps() {
+ void setupSpec() {
System.clearProperty("stubrunner.stubs.repository.root")
System.clearProperty("stubrunner.stubs.classifier")
}
+ void cleanupSpec() {
+ setupSpec()
+ }
+
@Ignore
def 'should make service discovery work'() {
expect: 'WireMocks are running'
diff --git a/tests/spring-cloud-contract-stub-runner-camel/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/camel/CamelStubRunnerSpec.groovy b/tests/spring-cloud-contract-stub-runner-camel/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/camel/CamelStubRunnerSpec.groovy
deleted file mode 100644
index 71e254a0bd..0000000000
--- a/tests/spring-cloud-contract-stub-runner-camel/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/camel/CamelStubRunnerSpec.groovy
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Copyright 2013-2020 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.stubrunner.messaging.camel
-
-import groovy.json.JsonOutput
-import groovy.json.JsonSlurper
-import org.apache.activemq.spring.ActiveMQConnectionFactory
-import org.apache.camel.CamelContext
-import org.apache.camel.ConsumerTemplate
-import org.apache.camel.Exchange
-import org.apache.camel.ProducerTemplate
-import org.apache.camel.component.activemq.ActiveMQComponent
-import org.apache.camel.component.jms.JmsConfiguration
-import org.apache.camel.impl.engine.DefaultShutdownStrategy
-import spock.lang.Ignore
-import spock.lang.Specification
-
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.beans.factory.annotation.Value
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
-import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.cloud.contract.spec.Contract
-import org.springframework.cloud.contract.stubrunner.StubFinder
-import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner
-import org.springframework.context.annotation.Bean
-import org.springframework.context.annotation.ComponentScan
-import org.springframework.context.annotation.Configuration
-import org.springframework.test.annotation.DirtiesContext
-import org.springframework.test.context.ContextConfiguration
-
-/**
- * @author Marcin Grzejszczak
- */
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
-@SpringBootTest(properties = "debug=true")
-@AutoConfigureStubRunner
-@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
-@Ignore
-class CamelStubRunnerSpec extends Specification {
-
- //TODO: fix extremely slow test that causes pipeline to fail and then unignore
-
- @Autowired
- StubFinder stubFinder
- @Autowired
- CamelContext camelContext
- ConsumerTemplate consumerTemplate
- ProducerTemplate producerTemplate
-
- def setup() {
- consumerTemplate = camelContext.createConsumerTemplate()
- producerTemplate = camelContext.createProducerTemplate()
- }
-
- def cleanup() {
- // ensure that message were taken from the queue
- consumerTemplate.receive('jms:output', 100)
- consumerTemplate.receive('jms:input', 100)
- this.producerTemplate.stop()
- this.consumerTemplate.stop()
- def strategy = new DefaultShutdownStrategy(this.camelContext)
- strategy.timeout = 1
- this.camelContext.shutdownStrategy = strategy
- }
-
- def 'should not trigger a message that does not match input'() {
- when:
- producerTemplate.
- sendBodyAndHeaders('jms:input', new BookReturned('notmatching'), [wrong: 'header_value'])
- then:
- Exchange receivedMessage = consumerTemplate.receive('jms:output', 100)
- and:
- receivedMessage == null
- }
-
- def 'should download the stub and register a route for it'() {
- when:
- // tag::client_send[]
- producerTemplate.
- sendBodyAndHeaders('jms:input', new BookReturned('foo'), [sample: 'header'])
- // end::client_send[]
- then:
- // tag::client_receive[]
- Exchange receivedMessage = consumerTemplate.receive('jms:output', 5000)
- // end::client_receive[]
- and:
- // tag::client_receive_message[]
- receivedMessage != null
- assertThatBodyContainsBookNameFoo(receivedMessage.in.body)
- receivedMessage.in.headers.get('BOOK-NAME') == 'foo'
- // end::client_receive_message[]
- }
-
- def 'should trigger a message by label'() {
- when:
- // tag::client_trigger[]
- stubFinder.trigger('return_book_1')
- // end::client_trigger[]
- then:
- // tag::client_trigger_receive[]
- Exchange receivedMessage = consumerTemplate.receive('jms:output', 5000)
- // end::client_trigger_receive[]
- and:
- // tag::client_trigger_message[]
- receivedMessage != null
- assertThatBodyContainsBookNameFoo(receivedMessage.in.body)
- receivedMessage.in.headers.get('BOOK-NAME') == 'foo'
- // end::client_trigger_message[]
- }
-
- def 'should trigger a label for the existing groupId:artifactId'() {
- when:
- // tag::trigger_group_artifact[]
- stubFinder.
- trigger('org.springframework.cloud.contract.verifier.stubs:camelService', 'return_book_1')
- // end::trigger_group_artifact[]
- then:
- Exchange receivedMessage = consumerTemplate.receive('jms:output', 5000)
- and:
- receivedMessage != null
- assertThatBodyContainsBookNameFoo(receivedMessage.in.body)
- receivedMessage.in.headers.get('BOOK-NAME') == 'foo'
- }
-
- def 'should trigger a label for the existing artifactId'() {
- when:
- // tag::trigger_artifact[]
- stubFinder.trigger('camelService', 'return_book_1')
- // end::trigger_artifact[]
- then:
- Exchange receivedMessage = consumerTemplate.receive('jms:output', 5000)
- and:
- receivedMessage != null
- assertThatBodyContainsBookNameFoo(receivedMessage.in.body)
- receivedMessage.in.headers.get('BOOK-NAME') == 'foo'
- }
-
- def 'should throw an exception when missing label is passed'() {
- when:
- stubFinder.trigger('missing label')
- then:
- thrown(IllegalArgumentException)
- }
-
- def 'should throw an exception when missing label and artifactid is passed'() {
- when:
- stubFinder.trigger('some:service', 'return_book_1')
- then:
- thrown(IllegalArgumentException)
- }
-
- def 'should trigger messages by running all triggers'() {
- when:
- // tag::trigger_all[]
- stubFinder.trigger()
- // end::trigger_all[]
- then:
- Exchange receivedMessage = consumerTemplate.receive('jms:output', 5000)
- and:
- receivedMessage != null
- assertThatBodyContainsBookNameFoo(receivedMessage.in.body)
- receivedMessage.in.headers.get('BOOK-NAME') == 'foo'
- }
-
- def 'should trigger a label with no output message'() {
- when:
- // tag::trigger_no_output[]
- producerTemplate.
- sendBodyAndHeaders('jms:delete', new BookReturned('foo'), [sample: 'header'])
- // end::trigger_no_output[]
- then:
- noExceptionThrown()
- }
-
- private boolean assertThatBodyContainsBookNameFoo(Object payload) {
- String objectAsString = payload instanceof String ? payload :
- JsonOutput.toJson(payload)
- def json = new JsonSlurper().parseText(objectAsString)
- return json.bookName == 'foo'
- }
-
- @Configuration
- @ComponentScan
- @EnableAutoConfiguration
- static class Config {
-
- @Bean
- ActiveMQConnectionFactory activeMQConnectionFactory(@Value('${activemq.url:vm://localhost?broker.persistent=false}') String url) {
- ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(brokerURL: url)
- try {
- factory.trustAllPackages = true
- }
- catch (Throwable e) {
- }
- return factory
- }
-
- @Bean
- JmsConfiguration jmsConfiguration(ActiveMQConnectionFactory activeMQConnectionFactory) {
- return new JmsConfiguration(connectionFactory: activeMQConnectionFactory)
- }
-
- @Bean
- ActiveMQComponent activeMQComponent(JmsConfiguration jmsConfiguration) {
- return new ActiveMQComponent(configuration: jmsConfiguration)
- }
- }
-
-
- Contract dsl =
- // tag::sample_dsl[]
- Contract.make {
- label 'return_book_1'
- input {
- triggeredBy('bookReturnedTriggered()')
- }
- outputMessage {
- sentTo('jms:output')
- body('''{ "bookName" : "foo" }''')
- headers {
- header('BOOK-NAME', 'foo')
- }
- }
- }
- // end::sample_dsl[]
-
- Contract dsl2 =
- // tag::sample_dsl_2[]
- Contract.make {
- label 'return_book_2'
- input {
- messageFrom('jms:input')
- messageBody([
- bookName: 'foo'
- ])
- messageHeaders {
- header('sample', 'header')
- }
- }
- outputMessage {
- sentTo('jms:output')
- body([
- bookName: 'foo'
- ])
- headers {
- header('BOOK-NAME', 'foo')
- }
- }
- }
- // end::sample_dsl_2[]
-
- Contract dsl3 =
- // tag::sample_dsl_3[]
- Contract.make {
- label 'delete_book'
- input {
- messageFrom('jms:delete')
- messageBody([
- bookName: 'foo'
- ])
- messageHeaders {
- header('sample', 'header')
- }
- assertThat('bookWasDeleted()')
- }
- }
- // end::sample_dsl_3[]
-}
diff --git a/tests/spring-cloud-contract-stub-runner-integration/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/integration/IntegrationStubRunnerSpec.groovy b/tests/spring-cloud-contract-stub-runner-integration/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/integration/IntegrationStubRunnerSpec.groovy
index e7d99c710d..6e54bfb3ae 100644
--- a/tests/spring-cloud-contract-stub-runner-integration/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/integration/IntegrationStubRunnerSpec.groovy
+++ b/tests/spring-cloud-contract-stub-runner-integration/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/integration/IntegrationStubRunnerSpec.groovy
@@ -25,7 +25,7 @@ import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
+import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.spec.Contract
import org.springframework.cloud.contract.stubrunner.StubFinder
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner
@@ -34,14 +34,12 @@ import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.ImportResource
import org.springframework.messaging.Message
-import org.springframework.test.context.ContextConfiguration
-
/**
* @author Marcin Grzejszczak
*/
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
@ImportResource("classpath*:integration-context.xml")
@AutoConfigureStubRunner
+@SpringBootTest(classes = Config)
@IgnoreIf({ os.windows })
class IntegrationStubRunnerSpec extends Specification {
diff --git a/tests/spring-cloud-contract-stub-runner-jms/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/jms/JmsStubRunnerSpec.groovy b/tests/spring-cloud-contract-stub-runner-jms/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/jms/JmsStubRunnerSpec.groovy
index f797e517de..5cc194286c 100644
--- a/tests/spring-cloud-contract-stub-runner-jms/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/jms/JmsStubRunnerSpec.groovy
+++ b/tests/spring-cloud-contract-stub-runner-jms/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/jms/JmsStubRunnerSpec.groovy
@@ -29,7 +29,6 @@ import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.spec.Contract
import org.springframework.cloud.contract.stubrunner.StubFinder
@@ -40,13 +39,10 @@ import org.springframework.context.annotation.Configuration
import org.springframework.jms.annotation.EnableJms
import org.springframework.jms.core.JmsTemplate
import org.springframework.jms.core.MessagePostProcessor
-import org.springframework.test.context.ContextConfiguration
-
/**
* @author Marcin Grzejszczak
*/
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
-@SpringBootTest(properties = ["debug=true"])
+@SpringBootTest(classes = Config, properties = ["debug=true"])
@AutoConfigureStubRunner
@IgnoreIf({ os.windows })
class JmsStubRunnerSpec extends Specification {
diff --git a/tests/spring-cloud-contract-stub-runner-kafka/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/kafka/KafkaStubRunnerSpec.groovy b/tests/spring-cloud-contract-stub-runner-kafka/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/kafka/KafkaStubRunnerSpec.groovy
index d6310784c3..0915919b32 100644
--- a/tests/spring-cloud-contract-stub-runner-kafka/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/kafka/KafkaStubRunnerSpec.groovy
+++ b/tests/spring-cloud-contract-stub-runner-kafka/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/kafka/KafkaStubRunnerSpec.groovy
@@ -28,9 +28,7 @@ import spock.util.concurrent.PollingConditions
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.cloud.contract.spec.Contract
import org.springframework.cloud.contract.stubrunner.StubFinder
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner
import org.springframework.context.annotation.Bean
@@ -45,230 +43,228 @@ import org.springframework.messaging.Message
import org.springframework.messaging.MessageHeaders
import org.springframework.messaging.support.MessageBuilder
import org.springframework.stereotype.Component
-import org.springframework.test.context.ContextConfiguration
/**
* @author Marcin Grzejszczak
*/
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
-@SpringBootTest(properties = ["debug=true"])
+@SpringBootTest(classes = Config, properties = ["debug=true"])
@AutoConfigureStubRunner
@IgnoreIf({ os.windows })
@EmbeddedKafka(topics = ["input", "input2", "output", "delete"])
@Commons
class KafkaStubRunnerSpec extends Specification {
- @Autowired
- StubFinder stubFinder
- @Autowired
- KafkaTemplate kafkaTemplate
- @Autowired
- MyMessageListener myMessageListener
- PollingConditions await = new PollingConditions(timeout: 15, initialDelay: 1, delay: 1)
+ @Autowired
+ StubFinder stubFinder
+ @Autowired
+ KafkaTemplate kafkaTemplate
+ @Autowired
+ MyMessageListener myMessageListener
+ PollingConditions await = new PollingConditions(timeout: 15, initialDelay: 1, delay: 1)
- def setup() {
- this.myMessageListener.clear()
- }
+ def setup() {
+ this.myMessageListener.clear()
+ }
- def cleanup() {
- this.myMessageListener.clear()
- }
+ def cleanup() {
+ this.myMessageListener.clear()
+ }
- private Message receiveFromOutput() {
- Message m = this.myMessageListener.output()
- log.info("Received message [" + m + "]")
- return m
- }
+ private Message receiveFromOutput() {
+ Message m = this.myMessageListener.output()
+ log.info("Received message [" + m + "]")
+ return m
+ }
- // Skipping the test on Jenkins cause it's for some reason flakey only there
- def 'should download the stub and register a route for it'() {
- expect:
- await.eventually {
- log.info("Sending the message")
- // tag::client_send[]
- Message message = MessageBuilder.createMessage(new BookReturned('foo'), new MessageHeaders([sample: "header",]))
- kafkaTemplate.setDefaultTopic('input')
- kafkaTemplate.send(message)
- // end::client_send[]
- log.info("Message sent")
- log.info("Receiving the message")
- // tag::client_receive[]
- Message receivedMessage = receiveFromOutput()
- // end::client_receive[]
- log.info("Message received [" + receivedMessage + "]")
- // tag::client_receive_message[]
- assert receivedMessage != null
- assert assertThatBodyContainsBookNameFoo(receivedMessage.getPayload())
- assert receivedMessage.getHeaders().get('BOOK-NAME') == 'foo'
- // end::client_receive_message[]
- }
- }
+ // Skipping the test on Jenkins cause it's for some reason flakey only there
+ def 'should download the stub and register a route for it'() {
+ expect:
+ await.eventually {
+ log.info("Sending the message")
+ // tag::client_send[]
+ Message message = MessageBuilder.createMessage(new BookReturned('foo'), new MessageHeaders([sample: "header",]))
+ kafkaTemplate.setDefaultTopic('input')
+ kafkaTemplate.send(message)
+ // end::client_send[]
+ log.info("Message sent")
+ log.info("Receiving the message")
+ // tag::client_receive[]
+ Message receivedMessage = receiveFromOutput()
+ // end::client_receive[]
+ log.info("Message received [" + receivedMessage + "]")
+ // tag::client_receive_message[]
+ assert receivedMessage != null
+ assert assertThatBodyContainsBookNameFoo(receivedMessage.getPayload())
+ assert receivedMessage.getHeaders().get('BOOK-NAME') == 'foo'
+ // end::client_receive_message[]
+ }
+ }
- def 'should propagate the Kafka record key via message headers'() {
- expect:
- await.eventually {
- log.info("Sending the message")
- // tag::client_send[]
- Message message = MessageBuilder.createMessage(new BookReturned('bar'), new MessageHeaders([kafka_messageKey: "bar5150",]))
- kafkaTemplate.setDefaultTopic('input2')
- kafkaTemplate.send(message)
- // end::client_send[]
- log.info("Message sent")
- log.info("Receiving the message")
- // tag::client_receive[]
- Message receivedMessage = receiveFromOutput()
- // end::client_receive[]
- log.info("Message received [" + receivedMessage + "]")
- // tag::client_receive_message[]
- assert receivedMessage != null
- assert assertThatBodyContainsBookName(receivedMessage.getPayload(), 'bar')
- assert receivedMessage.getHeaders().get('BOOK-NAME') == 'bar'
- assert receivedMessage.getHeaders().get("kafka_receivedMessageKey") == 'bar5150'
- // end::client_receive_message[]
- }
- }
+ def 'should propagate the Kafka record key via message headers'() {
+ expect:
+ await.eventually {
+ log.info("Sending the message")
+ // tag::client_send[]
+ Message message = MessageBuilder.createMessage(new BookReturned('bar'), new MessageHeaders([kafka_messageKey: "bar5150",]))
+ kafkaTemplate.setDefaultTopic('input2')
+ kafkaTemplate.send(message)
+ // end::client_send[]
+ log.info("Message sent")
+ log.info("Receiving the message")
+ // tag::client_receive[]
+ Message receivedMessage = receiveFromOutput()
+ // end::client_receive[]
+ log.info("Message received [" + receivedMessage + "]")
+ // tag::client_receive_message[]
+ assert receivedMessage != null
+ assert assertThatBodyContainsBookName(receivedMessage.getPayload(), 'bar')
+ assert receivedMessage.getHeaders().get('BOOK-NAME') == 'bar'
+ assert receivedMessage.getHeaders().get("kafka_receivedMessageKey") == 'bar5150'
+ // end::client_receive_message[]
+ }
+ }
- def 'should trigger a message by label'() {
- expect:
- await.eventually {
- // tag::client_trigger[]
- stubFinder.trigger('return_book_1')
- // end::client_trigger[]
- // tag::client_trigger_receive[]
- Message receivedMessage = receiveFromOutput()
- // end::client_trigger_receive[]
- // tag::client_trigger_message[]
- assert receivedMessage != null
- assert assertThatBodyContainsBookNameFoo(receivedMessage.getPayload())
- assert receivedMessage.getHeaders().get('BOOK-NAME') == 'foo'
- // end::client_trigger_message[]
- }
- }
+ def 'should trigger a message by label'() {
+ expect:
+ await.eventually {
+ // tag::client_trigger[]
+ stubFinder.trigger('return_book_1')
+ // end::client_trigger[]
+ // tag::client_trigger_receive[]
+ Message receivedMessage = receiveFromOutput()
+ // end::client_trigger_receive[]
+ // tag::client_trigger_message[]
+ assert receivedMessage != null
+ assert assertThatBodyContainsBookNameFoo(receivedMessage.getPayload())
+ assert receivedMessage.getHeaders().get('BOOK-NAME') == 'foo'
+ // end::client_trigger_message[]
+ }
+ }
- def 'should trigger a label for the existing groupId:artifactId'() {
- expect:
- await.eventually {
- // tag::trigger_group_artifact[]
- stubFinder.
- trigger('my:stubs', 'return_book_1')
- // end::trigger_group_artifact[]
- Message receivedMessage = receiveFromOutput()
- assert receivedMessage != null
- assert assertThatBodyContainsBookNameFoo(receivedMessage.getPayload())
- assert receivedMessage.getHeaders().get('BOOK-NAME') == 'foo'
- }
- }
+ def 'should trigger a label for the existing groupId:artifactId'() {
+ expect:
+ await.eventually {
+ // tag::trigger_group_artifact[]
+ stubFinder.
+ trigger('my:stubs', 'return_book_1')
+ // end::trigger_group_artifact[]
+ Message receivedMessage = receiveFromOutput()
+ assert receivedMessage != null
+ assert assertThatBodyContainsBookNameFoo(receivedMessage.getPayload())
+ assert receivedMessage.getHeaders().get('BOOK-NAME') == 'foo'
+ }
+ }
- def 'should trigger a label for the existing artifactId'() {
- expect:
- await.eventually {
- // tag::trigger_artifact[]
- stubFinder.trigger('stubs', 'return_book_1')
- // end::trigger_artifact[]
- Message receivedMessage = receiveFromOutput()
- assert receivedMessage != null
- assert assertThatBodyContainsBookNameFoo(receivedMessage.getPayload())
- assert receivedMessage.getHeaders().get('BOOK-NAME') == 'foo'
- }
- }
+ def 'should trigger a label for the existing artifactId'() {
+ expect:
+ await.eventually {
+ // tag::trigger_artifact[]
+ stubFinder.trigger('stubs', 'return_book_1')
+ // end::trigger_artifact[]
+ Message receivedMessage = receiveFromOutput()
+ assert receivedMessage != null
+ assert assertThatBodyContainsBookNameFoo(receivedMessage.getPayload())
+ assert receivedMessage.getHeaders().get('BOOK-NAME') == 'foo'
+ }
+ }
- def 'should throw an exception when missing label is passed'() {
- when:
- stubFinder.trigger('missing label')
- then:
- thrown(IllegalArgumentException)
- }
+ def 'should throw an exception when missing label is passed'() {
+ when:
+ stubFinder.trigger('missing label')
+ then:
+ thrown(IllegalArgumentException)
+ }
- def 'should throw an exception when missing label and artifactid is passed'() {
- when:
- stubFinder.trigger('some:service', 'return_book_1')
- then:
- thrown(IllegalArgumentException)
- }
+ def 'should throw an exception when missing label and artifactid is passed'() {
+ when:
+ stubFinder.trigger('some:service', 'return_book_1')
+ then:
+ thrown(IllegalArgumentException)
+ }
- def 'should trigger messages by running all triggers'() {
- expect:
- await.eventually {
- // tag::trigger_all[]
- stubFinder.trigger()
- // end::trigger_all[]
- Message receivedMessage = receiveFromOutput()
- assert receivedMessage != null
- assert assertThatBodyContainsBookNameFoo(receivedMessage.getPayload())
- assert receivedMessage.getHeaders().get('BOOK-NAME') == 'foo'
- }
- }
+ def 'should trigger messages by running all triggers'() {
+ expect:
+ await.eventually {
+ // tag::trigger_all[]
+ stubFinder.trigger()
+ // end::trigger_all[]
+ Message receivedMessage = receiveFromOutput()
+ assert receivedMessage != null
+ assert assertThatBodyContainsBookNameFoo(receivedMessage.getPayload())
+ assert receivedMessage.getHeaders().get('BOOK-NAME') == 'foo'
+ }
+ }
- def 'should trigger a label with no output message'() {
- when:
- // tag::trigger_no_output[]
- Message message = MessageBuilder.createMessage(new BookReturned('foo'), new MessageHeaders([sample: "header",]))
- kafkaTemplate.setDefaultTopic('delete')
- kafkaTemplate.send(message)
- // end::trigger_no_output[]
- then:
- noExceptionThrown()
- }
+ def 'should trigger a label with no output message'() {
+ when:
+ // tag::trigger_no_output[]
+ Message message = MessageBuilder.createMessage(new BookReturned('foo'), new MessageHeaders([sample: "header",]))
+ kafkaTemplate.setDefaultTopic('delete')
+ kafkaTemplate.send(message)
+ // end::trigger_no_output[]
+ then:
+ noExceptionThrown()
+ }
- def 'should not trigger a message that does not match input'() {
- when:
- Message message = MessageBuilder.createMessage(new BookReturned('notmatching'), new MessageHeaders([wrong: "header",]))
- kafkaTemplate.setDefaultTopic('input')
- kafkaTemplate.send(message)
- then:
- Message receivedMessage = receiveFromOutput()
- and:
- receivedMessage == null
- }
+ def 'should not trigger a message that does not match input'() {
+ when:
+ Message message = MessageBuilder.createMessage(new BookReturned('notmatching'), new MessageHeaders([wrong: "header",]))
+ kafkaTemplate.setDefaultTopic('input')
+ kafkaTemplate.send(message)
+ then:
+ Message receivedMessage = receiveFromOutput()
+ and:
+ receivedMessage == null
+ }
- private boolean assertThatBodyContainsBookNameFoo(Object payload) {
- return assertThatBodyContainsBookName(payload, 'foo')
- }
+ private boolean assertThatBodyContainsBookNameFoo(Object payload) {
+ return assertThatBodyContainsBookName(payload, 'foo')
+ }
- private boolean assertThatBodyContainsBookName(Object payload, String expectedValue) {
- log.info("Got payload [" + payload + "]")
- String objectAsString = payload instanceof String ? payload :
- JsonOutput.toJson(payload)
- def json = new JsonSlurper().parseText(objectAsString)
- return json.bookName == expectedValue
- }
+ private boolean assertThatBodyContainsBookName(Object payload, String expectedValue) {
+ log.info("Got payload [" + payload + "]")
+ String objectAsString = payload instanceof String ? payload :
+ JsonOutput.toJson(payload)
+ def json = new JsonSlurper().parseText(objectAsString)
+ return json.bookName == expectedValue
+ }
- @Configuration
- @ComponentScan
- @EnableAutoConfiguration
- @EnableKafka
- static class Config {
+ @Configuration
+ @ComponentScan
+ @EnableAutoConfiguration
+ @EnableKafka
+ static class Config {
- @Bean
- DefaultKafkaHeaderMapper headerMapper() {
- return new DefaultKafkaHeaderMapper();
- }
+ @Bean
+ DefaultKafkaHeaderMapper headerMapper() {
+ return new DefaultKafkaHeaderMapper();
+ }
- }
+ }
- @Commons
- @Component
- static class MyMessageListener {
+ @Commons
+ @Component
+ static class MyMessageListener {
- CountDownLatch latch = new CountDownLatch(1)
+ CountDownLatch latch = new CountDownLatch(1)
- Message output
+ Message output
- @KafkaListener(topics = ["output"])
- void output(Message message) {
- log.info("I got the message [${message}]")
- this.output = message
- this.latch.countDown()
- }
+ @KafkaListener(topics = ["output"])
+ void output(Message message) {
+ log.info("I got the message [${message}]")
+ this.output = message
+ this.latch.countDown()
+ }
- void clear() {
- this.output = null
- this.latch = new CountDownLatch(1)
- }
+ void clear() {
+ this.output = null
+ this.latch = new CountDownLatch(1)
+ }
- Message output() {
- this.latch.await(2, TimeUnit.SECONDS)
- return this.output
- }
- }
+ Message output() {
+ this.latch.await(2, TimeUnit.SECONDS)
+ return this.output
+ }
+ }
}
\ No newline at end of file
diff --git a/tests/spring-cloud-contract-stub-runner-moco/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/moco/MocoHttpServerStubSpec.groovy b/tests/spring-cloud-contract-stub-runner-moco/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/moco/MocoHttpServerStubSpec.groovy
index 5b68231c41..cbdfad06ba 100644
--- a/tests/spring-cloud-contract-stub-runner-moco/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/moco/MocoHttpServerStubSpec.groovy
+++ b/tests/spring-cloud-contract-stub-runner-moco/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/moco/MocoHttpServerStubSpec.groovy
@@ -20,22 +20,19 @@ import spock.lang.Specification
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.stubrunner.StubFinder
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties
import org.springframework.context.annotation.Configuration
import org.springframework.test.context.ActiveProfiles
-import org.springframework.test.context.ContextConfiguration
/**
* @author Marcin Grzejszczak
*/
-@ContextConfiguration(classes = MocoConfig, loader = SpringBootContextLoader)
// tag::[classpath_stub_runner]
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
+@SpringBootTest(classes = MocoConfig, webEnvironment = SpringBootTest.WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = ["com.example:fraudDetectionServerMoco"],
- stubsMode = StubRunnerProperties.StubsMode.CLASSPATH)
+ stubsMode = StubRunnerProperties.StubsMode.CLASSPATH)
// end::[classpath_stub_runner]
@ActiveProfiles("test")
class MocoHttpServerStubSpec extends Specification {
diff --git a/tests/spring-cloud-contract-stub-runner-stream/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/stream/StreamStubRunnerSpec.groovy b/tests/spring-cloud-contract-stub-runner-stream/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/stream/StreamStubRunnerSpec.groovy
deleted file mode 100644
index 7d41ef7224..0000000000
--- a/tests/spring-cloud-contract-stub-runner-stream/src/test/groovy/org/springframework/cloud/contract/stubrunner/messaging/stream/StreamStubRunnerSpec.groovy
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright 2013-2020 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.stubrunner.messaging.stream
-
-import java.util.concurrent.TimeUnit
-
-import groovy.json.JsonOutput
-import groovy.json.JsonSlurper
-import spock.lang.Ignore
-import spock.lang.Specification
-
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration
-import org.springframework.boot.autoconfigure.ImportAutoConfiguration
-import org.springframework.boot.test.context.SpringBootContextLoader
-import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.cloud.contract.spec.Contract
-import org.springframework.cloud.contract.stubrunner.StubFinder
-import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner
-import org.springframework.cloud.contract.verifier.messaging.MessageVerifier
-import org.springframework.cloud.contract.verifier.messaging.boot.AutoConfigureMessageVerifier
-import org.springframework.cloud.stream.binder.test.TestChannelBinderConfiguration
-import org.springframework.context.annotation.Configuration
-import org.springframework.messaging.Message
-import org.springframework.test.context.ContextConfiguration
-/**
- * @author Marcin Grzejszczak
- */
-@ContextConfiguration(classes = Config, loader = SpringBootContextLoader)
-@SpringBootTest(properties = "debug=true")
-@AutoConfigureStubRunner
-@AutoConfigureMessageVerifier
-//@IgnoreIf({ os.windows })
-@Ignore("Wait until the feature of runtime message sending and polling is available")
-class StreamStubRunnerSpec extends Specification {
-
- @Autowired
- StubFinder stubFinder
- @Autowired
- MessageVerifier> messaging
-
- def 'should download the stub and register a route for it'() {
- when:
- // tag::client_send[]
- messaging.send(new BookReturned('foo'), [sample: 'header'], 'bookStorage')
- // end::client_send[]
- then:
- // tag::client_receive[]
- Message> receivedMessage = messaging.receive('returnBook')
- // end::client_receive[]
- and:
- // tag::client_receive_message[]
- receivedMessage != null
- assertJsons(receivedMessage.payload)
- receivedMessage.headers.get('BOOK-NAME') == 'foo'
- // end::client_receive_message[]
- }
-
- def 'should trigger a message by label'() {
- when:
- // tag::client_trigger[]
- stubFinder.trigger('return_book_1')
- // end::client_trigger[]
- then:
- // tag::client_trigger_receive[]
- Message> receivedMessage = messaging.receive('returnBook')
- // end::client_trigger_receive[]
- and:
- // tag::client_trigger_message[]
- receivedMessage != null
- assertJsons(receivedMessage.payload)
- receivedMessage.headers.get('BOOK-NAME') == 'foo'
- // end::client_trigger_message[]
- }
-
- def 'should trigger a label for the existing groupId:artifactId'() {
- when:
- // tag::trigger_group_artifact[]
- stubFinder.trigger('org.springframework.cloud.contract.verifier.stubs:streamService', 'return_book_1')
- // end::trigger_group_artifact[]
- then:
- Message> receivedMessage = messaging.receive('returnBook')
- and:
- receivedMessage != null
- assertJsons(receivedMessage.payload)
- receivedMessage.headers.get('BOOK-NAME') == 'foo'
- }
-
- def 'should trigger a label for the existing artifactId'() {
- when:
- // tag::trigger_artifact[]
- stubFinder.trigger('streamService', 'return_book_1')
- // end::trigger_artifact[]
- then:
- Message> receivedMessage = messaging.receive('returnBook')
- and:
- receivedMessage != null
- assertJsons(receivedMessage.payload)
- receivedMessage.headers.get('BOOK-NAME') == 'foo'
- }
-
- def 'should throw exception when missing label is passed'() {
- when:
- stubFinder.trigger('missing label')
- then:
- thrown(IllegalArgumentException)
- }
-
- def 'should throw exception when missing label and artifactid is passed'() {
- when:
- stubFinder.trigger('some:service', 'return_book_1')
- then:
- thrown(IllegalArgumentException)
- }
-
- def 'should trigger messages by running all triggers'() {
- when:
- // tag::trigger_all[]
- stubFinder.trigger()
- // end::trigger_all[]
- then:
- Message> receivedMessage = messaging.receive('returnBook')
- and:
- receivedMessage != null
- assertJsons(receivedMessage.payload)
- receivedMessage.headers.get('BOOK-NAME') == 'foo'
- }
-
- def 'should trigger a label with no output message'() {
- when:
- // tag::trigger_no_output[]
- messaging.send(new BookReturned('foo'), [sample: 'header'], 'delete')
- // end::trigger_no_output[]
- then:
- noExceptionThrown()
- }
-
- def 'should not trigger a message that does not match input'() {
- when:
- messaging.send(new BookReturned('not_matching'), [wrong: 'header_value'], 'bookStorage')
- then:
- Message> receivedMessage = messaging.receive('returnBook', 100, TimeUnit.MILLISECONDS)
- and:
- receivedMessage == null
- }
-
- private boolean assertJsons(Object payload) {
- String objectAsString = payload instanceof String ? payload :
- payload instanceof byte[] ? new String(payload)
- : JsonOutput.toJson(payload)
- def json = new JsonSlurper().parseText(objectAsString)
- return json.bookName == 'foo'
- }
-
- Contract dsl =
- // tag::sample_dsl[]
- Contract.make {
- label 'return_book_1'
- input { triggeredBy('bookReturnedTriggered()') }
- outputMessage {
- sentTo('returnBook')
- body('''{ "bookName" : "foo" }''')
- headers { header('BOOK-NAME', 'foo') }
- }
- }
- // end::sample_dsl[]
-
- Contract dsl2 =
- // tag::sample_dsl_2[]
- Contract.make {
- label 'return_book_2'
- input {
- messageFrom('bookStorage')
- messageBody([
- bookName: 'foo'
- ])
- messageHeaders { header('sample', 'header') }
- }
- outputMessage {
- sentTo('returnBook')
- body([
- bookName: 'foo'
- ])
- headers { header('BOOK-NAME', 'foo') }
- }
- }
- // end::sample_dsl_2[]
-
- Contract dsl3 =
- // tag::sample_dsl_3[]
- Contract.make {
- label 'delete_book'
- input {
- messageFrom('delete')
- messageBody([
- bookName: 'foo'
- ])
- messageHeaders { header('sample', 'header') }
- assertThat('bookWasDeleted()')
- }
- }
- // end::sample_dsl_3[]
-
- @ImportAutoConfiguration(TestChannelBinderConfiguration.class)
- @Configuration
- @EnableAutoConfiguration
- protected static class Config {
-
- }
-
-}