diff --git a/docs/src/main/asciidoc/verifier/introduction.adoc b/docs/src/main/asciidoc/verifier/introduction.adoc
index 5135fd9c2b..a6b9793a11 100644
--- a/docs/src/main/asciidoc/verifier/introduction.adoc
+++ b/docs/src/main/asciidoc/verifier/introduction.adoc
@@ -868,6 +868,20 @@ The generated tests all boil down to RestAssured in some form or fashion which r
logging.level.org.apache.http.wire=DEBUG
----
+==== How can I debug the mapping/request/response being sent by WireMock?
+
+Starting from version `1.2.0` we turn on WireMock logging to
+info and the WireMock notifier to being verbose. Now you will
+exactly know what request was received by WireMock server and which
+matching response definition was picked.
+
+To turn off this feature just bump WireMock logging to `ERROR`
+
+[source,properties,indent=0]
+----
+logging.level.com.github.tomakehurst.wiremock=ERROR
+----
+
==== How can I see what got registered in the HTTP server stub?
You can use the `mappingsOutputFolder` property on `@AutoConfigureStubRunner` or `StubRunnerRule`
diff --git a/spring-cloud-contract-dependencies/pom.xml b/spring-cloud-contract-dependencies/pom.xml
index 59ade9f9e2..62b8acf9e9 100644
--- a/spring-cloud-contract-dependencies/pom.xml
+++ b/spring-cloud-contract-dependencies/pom.xml
@@ -14,7 +14,7 @@
spring-cloud-contract-dependencies
Spring Cloud Contract Dependencies
- 2.6.0
+ 2.7.1
0.4.9
1.0.2.v20150114
diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java
index 85d204b0f8..7ffbcb3695 100644
--- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java
+++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStub.java
@@ -12,6 +12,7 @@ import java.util.Map;
import com.github.jknack.handlebars.Helper;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.WireMock;
+import com.github.tomakehurst.wiremock.common.Slf4jNotifier;
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
import com.github.tomakehurst.wiremock.extension.responsetemplating.ResponseTemplateTransformer;
import com.github.tomakehurst.wiremock.stubbing.StubMapping;
@@ -84,7 +85,8 @@ public class WireMockHttpServerStub implements HttpServerStub {
@Override
public HttpServerStub start(int port) {
- this.wireMockServer = new WireMockServer(config().port(port));
+ this.wireMockServer = new WireMockServer(config().port(port)
+ .notifier(new Slf4jNotifier(true)));
this.wireMockServer.start();
return this;
}
diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStubSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStubSpec.groovy
index 141bff47cd..0a8bb1b3bd 100644
--- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStubSpec.groovy
+++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStubSpec.groovy
@@ -18,12 +18,18 @@ package org.springframework.cloud.contract.stubrunner.provider.wiremock
import com.github.tomakehurst.wiremock.http.RequestMethod
import com.github.tomakehurst.wiremock.stubbing.StubMapping
+import org.junit.Rule
import spock.lang.Specification
+import org.springframework.boot.test.rule.OutputCapture
+import org.springframework.boot.test.web.client.TestRestTemplate
+
class WireMockHttpServerStubSpec extends Specification {
public static
final File MAPPING_DESCRIPTOR = new File('src/test/resources/repository/mappings/spring/cloud/ping/ping.json')
+ @Rule OutputCapture capture = new OutputCapture()
+
def 'should describe stub mapping'() {
given:
WireMockHttpServerStub mappingDescriptor = new WireMockHttpServerStub().start() as WireMockHttpServerStub
@@ -39,5 +45,26 @@ class WireMockHttpServerStubSpec extends Specification {
assert response.body == 'pong'
assert response.headers.contentTypeHeader.mimeTypePart() == 'text/plain'
}
+
+ cleanup:
+ mappingDescriptor.stop()
+ }
+
+ def 'should make WireMock print out logs on INFO'() {
+ given:
+ WireMockHttpServerStub mappingDescriptor = new WireMockHttpServerStub().start() as WireMockHttpServerStub
+ mappingDescriptor.registerMappings([
+ new File(WireMockHttpServerStubSpec.classLoader.getResource("simple.json").toURI())
+ ])
+
+ when:
+ String response = new TestRestTemplate().getForObject("http://localhost:${mappingDescriptor.port()}/foobar", String)
+
+ then:
+ response == "foo"
+ capture.toString().contains("Matched response definition")
+
+ cleanup:
+ mappingDescriptor.stop()
}
}
diff --git a/spring-cloud-contract-stub-runner/src/test/resources/simple.json b/spring-cloud-contract-stub-runner/src/test/resources/simple.json
new file mode 100644
index 0000000000..17361a09b3
--- /dev/null
+++ b/spring-cloud-contract-stub-runner/src/test/resources/simple.json
@@ -0,0 +1,13 @@
+{
+ "id" : "77514bd4-a102-4478-a3c0-0fda8b905591",
+ "request" : {
+ "method" : "GET",
+ "url": "/foobar"
+ },
+ "response" : {
+ "status" : 200,
+ "body" : "foo",
+ "transformers": ["response-template"]
+ },
+ "uuid" : "77514bd4-a102-4478-a3c0-0fda8b905591"
+}
\ No newline at end of file
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/bootSimple/gradle.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/bootSimple/gradle.properties
index e2e31f20ff..c7265bb479 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/bootSimple/gradle.properties
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/bootSimple/gradle.properties
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-wiremockVersion=2.6.0
+wiremockVersion=2.7.1
jsonAssertVersion=0.4.8
verifierVersion=1.2.0.BUILD-SNAPSHOT
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/build.gradle b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/build.gradle
index c998624aaf..d8882713aa 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/build.gradle
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/build.gradle
@@ -83,7 +83,7 @@ configure([project(':fraudDetectionService'), project(':loanApplicationService')
testCompile "org.mockito:mockito-core"
testCompile "org.springframework:spring-test"
testCompile "org.springframework.boot:spring-boot-test"
- testCompile("com.github.tomakehurst:wiremock:2.6.0") {
+ testCompile("com.github.tomakehurst:wiremock:2.7.1") {
exclude group: 'org.eclipse.jetty'
}
}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradle.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradle.properties
index 7fc8372e28..74e0fcf18e 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradle.properties
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleJerseyProject/gradle.properties
@@ -13,6 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-wiremockVersion=2.6.0
+wiremockVersion=2.7.1
jsonAssertVersion=0.4.8
verifierVersion=1.2.0.BUILD-SNAPSHOT
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle.properties
index b8669f3a52..0dd0cb1ba8 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle.properties
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/sampleProject/gradle.properties
@@ -13,6 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-wiremockVersion=2.6.0
+wiremockVersion=2.7.1
jsonAssertVersion=0.4.8
verifierVersion=1.2.0.BUILD-SNAPSHOT
\ No newline at end of file
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/gradle.properties b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/gradle.properties
index e2e31f20ff..c7265bb479 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/gradle.properties
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/resources/functionalTest/scenarioProject/gradle.properties
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-wiremockVersion=2.6.0
+wiremockVersion=2.7.1
jsonAssertVersion=0.4.8
verifierVersion=1.2.0.BUILD-SNAPSHOT
diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockStubMappingSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockStubMappingSpec.groovy
index d71b28f138..40a485ea14 100644
--- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockStubMappingSpec.groovy
+++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockStubMappingSpec.groovy
@@ -47,12 +47,12 @@ class WireMockStubMappingSpec extends Specification {
WireMockStubMapping.buildFrom(stub_2_1_7)
}
- def "should successfully parse a WireMock 2.6.0 stub"() {
+ def "should successfully parse a WireMock 2.5.0 stub"() {
expect:
WireMockStubMapping.buildFrom(stub_2_5_1)
}
- def "should successfully parse a WireMock 2.6.0 stub that contains transformers"() {
+ def "should successfully parse a WireMock 2.5.0 stub that contains transformers"() {
expect:
WireMockStubMapping.buildFrom(stub_2_5_1_with_transformer)
}
diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java
index 5098999f6a..cac6d28b48 100644
--- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java
+++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockConfiguration.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
+import com.github.tomakehurst.wiremock.common.Slf4jNotifier;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -81,6 +82,7 @@ public class WireMockConfiguration implements SmartLifecycle {
factory.httpsPort(this.wireMock.getHttpsPort());
}
registerFiles(factory);
+ factory.notifier(new Slf4jNotifier(true));
this.options = factory;
}
this.server = new WireMockServer(this.options);
diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockRestServiceServer.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockRestServiceServer.java
index f9a07ee0a9..97f9821835 100644
--- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockRestServiceServer.java
+++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/WireMockRestServiceServer.java
@@ -25,6 +25,7 @@ import java.util.Comparator;
import java.util.List;
import javax.xml.xpath.XPathExpressionException;
+import com.github.tomakehurst.wiremock.matching.ContentPattern;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.MatcherAssert;
@@ -55,7 +56,6 @@ import com.github.tomakehurst.wiremock.matching.MatchesJsonPathPattern;
import com.github.tomakehurst.wiremock.matching.MatchesXPathPattern;
import com.github.tomakehurst.wiremock.matching.MultiValuePattern;
import com.github.tomakehurst.wiremock.matching.RequestPattern;
-import com.github.tomakehurst.wiremock.matching.StringValuePattern;
import com.github.tomakehurst.wiremock.stubbing.StubMapping;
import static org.springframework.test.web.client.match.MockRestRequestMatchers.header;
@@ -214,7 +214,7 @@ public class WireMockRestServiceServer {
if (request.getBodyPatterns() == null) {
return;
}
- for (final StringValuePattern pattern : request.getBodyPatterns()) {
+ for (final ContentPattern> pattern : request.getBodyPatterns()) {
if (pattern instanceof MatchesJsonPathPattern) {
expect.andExpect(MockRestRequestMatchers.jsonPath(((MatchesJsonPathPattern) pattern).getMatchesJsonPath()).exists());
} else if (pattern instanceof MatchesXPathPattern) {
@@ -224,7 +224,7 @@ public class WireMockRestServiceServer {
}
}
- private RequestMatcher matchContents(final StringValuePattern pattern) {
+ private RequestMatcher matchContents(final ContentPattern pattern) {
return new RequestMatcher() {
@Override public void match(ClientHttpRequest request)
throws IOException, AssertionError {
diff --git a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/BasicMappingBuilder.java b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/BasicMappingBuilder.java
index 69f021d229..350e24155a 100644
--- a/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/BasicMappingBuilder.java
+++ b/spring-cloud-contract-wiremock/src/main/java/org/springframework/cloud/contract/wiremock/restdocs/BasicMappingBuilder.java
@@ -11,6 +11,7 @@ import com.github.tomakehurst.wiremock.extension.Parameters;
import com.github.tomakehurst.wiremock.http.Request;
import com.github.tomakehurst.wiremock.http.RequestMethod;
import com.github.tomakehurst.wiremock.http.ResponseDefinition;
+import com.github.tomakehurst.wiremock.matching.ContentPattern;
import com.github.tomakehurst.wiremock.matching.RequestPattern;
import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder;
import com.github.tomakehurst.wiremock.matching.StringValuePattern;
@@ -75,7 +76,8 @@ class BasicMappingBuilder implements ScenarioMappingBuilder {
return this;
}
- @Override public BasicMappingBuilder withRequestBody(StringValuePattern bodyPattern) {
+ @Override public ScenarioMappingBuilder withRequestBody(
+ ContentPattern> bodyPattern) {
this.requestPatternBuilder.withRequestBody(bodyPattern);
return this;
}