Merge branch '1.0.x'
This commit is contained in:
@@ -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("\\", "\\\\"))};")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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')"
|
||||
}
|
||||
|
||||
|
||||
@@ -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)}]
|
||||
|
||||
Reference in New Issue
Block a user