Merge branch '1.0.x'

This commit is contained in:
Marcin Grzejszczak
2016-12-07 16:53:33 +01:00
4 changed files with 11 additions and 6 deletions

View File

@@ -19,13 +19,12 @@ package org.springframework.cloud.contract.verifier.builder
import groovy.transform.PackageScope
import groovy.transform.TypeChecked
import org.springframework.cloud.contract.spec.Contract
import org.springframework.cloud.contract.spec.internal.Header
import org.springframework.cloud.contract.spec.internal.ExecutionProperty
import org.springframework.cloud.contract.spec.internal.Header
import org.springframework.cloud.contract.spec.internal.NotToEscapePattern
import org.springframework.cloud.contract.verifier.config.ContractVerifierConfigProperties
import java.util.regex.Pattern
/**
* A {@link JUnitMethodBodyBuilder} implementation that uses MockMvc to send requests.
*
@@ -66,7 +65,8 @@ class MockMvcJUnitMethodBodyBuilder extends JUnitMethodBodyBuilder {
@Override
protected void processHeaderElement(BlockBuilder blockBuilder, String property, Object value) {
if (value instanceof NotToEscapePattern) {
blockBuilder.addLine("assertThat(response.header(\"$property\")).${createMatchesMethod(value.serverValue.pattern())};")
blockBuilder.addLine("assertThat(response.header(\"$property\"))." +
"${createMatchesMethod(value.serverValue.pattern().replace("\\", "\\\\"))};")
}
}

View File

@@ -59,7 +59,8 @@ class MockMvcSpockMethodRequestProcessingBodyBuilder extends SpockMethodRequestP
@Override
protected void processHeaderElement(BlockBuilder blockBuilder, String property, Object value) {
if (value instanceof NotToEscapePattern) {
blockBuilder.addLine("response.header('$property') ${patternComparison(value.serverValue)}")
blockBuilder.addLine("response.header('$property') " +
"${patternComparison(value.serverValue.pattern().replace("\\", "\\\\"))}")
}
}
@Override

View File

@@ -148,6 +148,10 @@ abstract class SpockMethodRequestProcessingBodyBuilder extends RequestProcessing
}
protected String patternComparison(Pattern pattern) {
return patternComparison(pattern.toString())
}
protected String patternComparison(String pattern) {
return "==~ java.util.regex.Pattern.compile('$pattern')"
}

View File

@@ -1558,7 +1558,7 @@ World.'''"""
strippedTest.matches(""".*header\\("header", "application\\/vnd\\.fraud\\.v1\\+json;.*"\\).*""")
strippedTest.matches(""".*body\\('''\\{"requestElement":"[0-9]{5}"\\}'''\\).*""")
strippedTest.matches(""".*put\\("/foo/[0-9]{5}"\\).*""")
strippedTest.contains("""response.header('Content-Type') ==~ java.util.regex.Pattern.compile('application/vnd\\.fraud\\.v1\\+json.*')""")
strippedTest.contains("""response.header('Content-Type') ==~ java.util.regex.Pattern.compile('application/vnd\\\\.fraud\\\\.v1\\\\+json.*')""")
"application/vnd.fraud.v1+json;charset=UTF-8".matches('application/vnd\\.fraud\\.v1\\+json.*')
strippedTest.contains("""assertThatJson(parsedJson).field("responseElement").matches("[0-9]{7}")""")
}
@@ -1776,7 +1776,7 @@ World.'''"""
builder.appendTo(blockBuilder)
def test = blockBuilder.toString()
then:
test.contains('application/vnd\\.fraud\\.v1\\+json.*')
test.contains('application/vnd\\\\.fraud\\\\.v1\\\\+json.*')
where:
methodBuilder << [{ Contract dsl -> new MockMvcSpockMethodRequestProcessingBodyBuilder(dsl, properties)},
{ Contract dsl -> new MockMvcJUnitMethodBodyBuilder(dsl, properties)}]