From 4c08408e6683b0e813c4cbce76c113c4e50e9ba4 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Fri, 1 Sep 2017 16:46:56 +0200 Subject: [PATCH] DslProperty doesn't get resolved in WireMock stub headers without this change we're using directly the clientSide value of the DslProperty, whereas it can be nested with this change we resolve the final value of the DslProperty fixes #408 --- .../dsl/wiremock/WireMockResponseStubStrategy.groovy | 5 +++-- .../contract/verifier/dsl/WireMockGroovyDslSpec.groovy | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategy.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategy.groovy index 4c0e4d8c7c..f0fee12960 100755 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategy.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockResponseStubStrategy.groovy @@ -26,6 +26,7 @@ import org.springframework.cloud.contract.spec.Contract import org.springframework.cloud.contract.spec.internal.Request import org.springframework.cloud.contract.spec.internal.Response import org.springframework.cloud.contract.verifier.util.ContentType +import org.springframework.cloud.contract.verifier.util.MapConverter import static org.springframework.cloud.contract.verifier.util.ContentUtils.recognizeContentTypeFromContent import static org.springframework.cloud.contract.verifier.util.ContentUtils.recognizeContentTypeFromHeader @@ -51,7 +52,7 @@ class WireMockResponseStubStrategy extends BaseWireMockStubStrategy { return null } ResponseDefinitionBuilder builder = new ResponseDefinitionBuilder() - .withStatus(response.status.clientValue as Integer) + .withStatus(MapConverter.getStubSideValues(response.status) as Integer) appendHeaders(builder) appendBody(builder) appendResponseDelayTime(builder) @@ -62,7 +63,7 @@ class WireMockResponseStubStrategy extends BaseWireMockStubStrategy { private void appendHeaders(ResponseDefinitionBuilder builder) { if (response.headers) { builder.withHeaders(new HttpHeaders(response.headers.entries?.collect { - new HttpHeader(it.name, it.clientValue.toString()) + new HttpHeader(it.name, MapConverter.getStubSideValues(it.clientValue).toString()) })) } } diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/WireMockGroovyDslSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/WireMockGroovyDslSpec.groovy index 5a7d1f3424..f4df63cb15 100755 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/WireMockGroovyDslSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/WireMockGroovyDslSpec.groovy @@ -1755,7 +1755,7 @@ class WireMockGroovyDslSpec extends Specification implements WireMockStubVerifie response { status 200 headers { - header(authorization(), fromRequest().header(authorization())) + header(authorization(), "${fromRequest().header(authorization())};foo") } body( url: fromRequest().url(), @@ -1798,7 +1798,7 @@ class WireMockGroovyDslSpec extends Specification implements WireMockStubVerifie "status" : 200, "body" : "{\\"url\\":\\"{{{request.url}}}\\",\\"param\\":\\"{{{request.query.foo.[0]}}}\\",\\"paramIndex\\":\\"{{{request.query.foo.[1]}}}\\",\\"authorization\\":\\"{{{request.headers.Authorization.[0]}}}\\",\\"authorization2\\":\\"{{{request.headers.Authorization.[1]}}}\\",\\"fullBody\\":\\"{{{escapejsonbody}}}\\",\\"responseFoo\\":\\"{{{jsonpath this '$.foo'}}}\\",\\"responseBaz\\":{{{jsonpath this '$.baz'}}} ,\\"responseBaz2\\":\\"Bla bla {{{jsonpath this '$.foo'}}} bla bla\\"}", "headers" : { - "Authorization" : "{{{request.headers.Authorization.[0]}}}" + "Authorization" : "{{{request.headers.Authorization.[0]}}};foo" }, "transformers" : [ "response-template" ] } @@ -1813,7 +1813,7 @@ class WireMockGroovyDslSpec extends Specification implements WireMockStubVerifie server.addStubMapping(WireMockStubMapping.buildFrom(json)) then: ResponseEntity entity = call(port) - entity.headers.find { it.key == "Authorization" && it.value.contains("secret") } + entity.headers.find { it.key == "Authorization" && it.value.contains("secret;foo") } and: AssertionUtil.assertThatJsonsAreEqual((''' {