diff --git a/spring-cloud-contract-dependencies/pom.xml b/spring-cloud-contract-dependencies/pom.xml
index 0759f3c197..68c43fe577 100644
--- a/spring-cloud-contract-dependencies/pom.xml
+++ b/spring-cloud-contract-dependencies/pom.xml
@@ -15,7 +15,7 @@
Spring Cloud Contract Dependencies
2.1.7
- 0.4.8
+ 0.4.9
1.0.2.v20150114
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy
index 8f41b979ee..6b7c96820c 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy
+++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/SpringCloudContractVerifierGradlePlugin.groovy
@@ -90,7 +90,7 @@ class SpringCloudContractVerifierGradlePlugin implements Plugin {
//TODO: Deprecate this since starting with 1.1.x
private void addProjectDependencies(Project project) {
project.dependencies.add("testCompile", "com.github.tomakehurst:wiremock:2.1.7")
- project.dependencies.add("testCompile", "com.toomuchcoding.jsonassert:jsonassert:0.4.8")
+ project.dependencies.add("testCompile", "com.toomuchcoding.jsonassert:jsonassert:0.4.9")
project.dependencies.add("testCompile", "org.assertj:assertj-core:2.3.0")
}
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/complex-configuration/pom.xml b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/complex-configuration/pom.xml
index 2ef9310d56..48bd2113ec 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/complex-configuration/pom.xml
+++ b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/complex-configuration/pom.xml
@@ -63,7 +63,7 @@
com.toomuchcoding.jsonassert
jsonassert
- 0.4.8
+ 0.4.9
test
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/plugin-extension/pom.xml b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/plugin-extension/pom.xml
index e03b81bc7a..ba6ff15852 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/plugin-extension/pom.xml
+++ b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/plugin-extension/pom.xml
@@ -63,7 +63,7 @@
com.toomuchcoding.jsonassert
jsonassert
- 0.4.8
+ 0.4.9
test
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/spring-boot-groovy/pom.xml b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/spring-boot-groovy/pom.xml
index a0dc42aa9d..2aaf275a43 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/spring-boot-groovy/pom.xml
+++ b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/spring-boot-groovy/pom.xml
@@ -64,7 +64,7 @@
com.toomuchcoding.jsonassert
jsonassert
- 0.4.8
+ 0.4.9
test
diff --git a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/spring-boot-java/pom.xml b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/spring-boot-java/pom.xml
index e03b81bc7a..ba6ff15852 100644
--- a/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/spring-boot-java/pom.xml
+++ b/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/test/projects/spring-boot-java/pom.xml
@@ -63,7 +63,7 @@
com.toomuchcoding.jsonassert
jsonassert
- 0.4.8
+ 0.4.9
test
diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy
index 26314cd5d6..cd0c1c9c55 100644
--- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy
+++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy
@@ -26,6 +26,8 @@ import spock.lang.Issue
import spock.lang.Shared
import spock.lang.Specification
+import java.lang.reflect.InvocationTargetException
+
class MethodBodyBuilderSpec extends Specification implements WireMockStubVerifier {
@Rule OutputCapture capture = new OutputCapture()
@@ -153,4 +155,56 @@ DocumentContext parsedJson = JsonPath.parse(json);
"JaxRsClientJUnitMethodBodyBuilder" | { Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) }
}
+ @Issue('#289')
+ def "should fail on nonexistent field [#methodBuilderName]"() {
+ given:
+ Contract contractDsl = Contract.make {
+ request {
+ method 'GET'
+ url '/something'
+ headers {
+ contentType(applicationJson())
+ }
+ }
+ response {
+ status 200
+ headers {
+ contentType(applicationJson())
+ }
+ body([
+ doesNotExist: $(p(anyAlphaUnicode()), c("123"))
+ ])
+ }
+ }
+ MethodBodyBuilder builder = methodBuilder(contractDsl)
+ BlockBuilder blockBuilder = new BlockBuilder(" ")
+ when:
+ builder.appendTo(blockBuilder)
+ def test = blockBuilder.toString()
+ then:
+ SyntaxChecker.tryToCompile(methodBuilderName, blockBuilder.toString())
+ and:
+ String jsonSample = '''\
+String json = "{}";
+DocumentContext parsedJson = JsonPath.parse(json);
+'''
+ and:
+ LinkedList lines = [] as LinkedList
+ test.eachLine { if (it.contains('assertThatJson')) lines << it else it }
+ lines.addFirst(jsonSample)
+ try {
+ SyntaxChecker.tryToRun(methodBuilderName, lines.join("\n"))
+ } catch (IllegalStateException e) {
+ assert e.message.contains("Parsed JSON [{}] doesn't match the JSON path")
+ } catch (InvocationTargetException e1) {
+ assert e1.cause.message.contains("Parsed JSON [{}] doesn't match the JSON path")
+ }
+ where:
+ methodBuilderName | methodBuilder
+ "MockMvcSpockMethodBuilder" | { Contract dsl -> new MockMvcSpockMethodRequestProcessingBodyBuilder(dsl, properties) }
+ "MockMvcJUnitMethodBuilder" | { Contract dsl -> new MockMvcJUnitMethodBodyBuilder(dsl, properties) }
+ "JaxRsClientSpockMethodRequestProcessingBodyBuilder" | { Contract dsl -> new JaxRsClientSpockMethodRequestProcessingBodyBuilder(dsl, properties) }
+ "JaxRsClientJUnitMethodBodyBuilder" | { Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) }
+ }
+
}