Merge branch '1.1.x'

This commit is contained in:
Marcin Grzejszczak
2017-09-30 19:14:57 +02:00
4 changed files with 47 additions and 0 deletions

View File

@@ -115,6 +115,9 @@ class JaxRsClientJUnitMethodBodyBuilder extends JUnitMethodBodyBuilder {
protected appendHeaders(BlockBuilder bb) {
request.headers?.executeForEachHeader { Header header ->
if (headerOfAbsentType(header)) {
return
}
if (header.name == 'Content-Type' || header.name == 'Accept') return
bb.addLine(".header(\"${header.name}\", \"${header.serverValue}\")")
}

View File

@@ -120,6 +120,9 @@ class JaxRsClientSpockMethodRequestProcessingBodyBuilder extends SpockMethodRequ
protected appendHeaders(BlockBuilder bb) {
request.headers?.executeForEachHeader { Header header ->
if (headerOfAbsentType(header)) {
return
}
if (header.name == 'Content-Type' || header.name == 'Accept') return // Particular headers are set via 'request' / 'entity' methods
bb.addLine(".header('${header.name}', '${header.serverValue}')")
}

View File

@@ -95,6 +95,9 @@ abstract class RequestProcessingMethodBodyBuilder extends MethodBodyBuilder {
@Override
protected void processInput(BlockBuilder bb) {
request.headers?.executeForEachHeader { Header header ->
if (headerOfAbsentType(header)) {
return
}
bb.addLine(getHeaderString(header))
}
if (request.body) {
@@ -107,6 +110,11 @@ abstract class RequestProcessingMethodBodyBuilder extends MethodBodyBuilder {
}
}
protected boolean headerOfAbsentType(Header header) {
return header.serverValue instanceof MatchingStrategy &&
((MatchingStrategy) header.serverValue).type == MatchingStrategy.Type.ABSENT
}
@Override
protected void when(BlockBuilder bb) {
bb.addLine(getInputString(request))

View File

@@ -315,6 +315,39 @@ DocumentContext parsedJson = JsonPath.parse(json);
"JaxRsClientJUnitMethodBodyBuilder" | { Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties) }
}
@Issue("#424")
def "should not put an absent header to the request [#methodBuilderName]"() {
given:
Contract contractDsl = Contract.make {
request {
method 'GET'
url '/mytest'
headers {
header('myheader', absent())
}
}
response {
status 200
}
}
MethodBodyBuilder builder = methodBuilder(contractDsl)
BlockBuilder blockBuilder = new BlockBuilder(" ")
when:
builder.appendTo(blockBuilder)
then:
!blockBuilder.toString().contains("myheader")
and:
SyntaxChecker.tryToCompileWithoutCompileStatic(methodBuilderName, blockBuilder.toString())
and:
stubMappingIsValidWireMockStub(contractDsl)
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) }
}
def "should use fixed delay milliseconds in the generated test [#methodBuilderName]"() {
given:
Contract contractDsl = Contract.make {