diff --git a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Request.groovy b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Request.groovy index 982fe8f1ea..c7f3321c01 100644 --- a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Request.groovy +++ b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Request.groovy @@ -182,6 +182,10 @@ class Request extends Common { return new DslProperty(client.clientValue, clientValue) } + DslProperty $(ClientDslProperty client) { + return value(client) + } + @Override DslProperty value(ClientDslProperty client, ServerDslProperty server) { if (server.clientValue instanceof Pattern) { diff --git a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Response.groovy b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Response.groovy index 29949621fd..32ce645245 100644 --- a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Response.groovy +++ b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/Response.groovy @@ -95,6 +95,10 @@ class Response extends Common { return new DslProperty(value, server.serverValue) } + DslProperty $(ServerDslProperty server) { + return value(server) + } + @Override DslProperty value(ClientDslProperty client, ServerDslProperty server) { if (client.clientValue instanceof Pattern) { diff --git a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockClientConverterSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockClientConverterSpec.groovy index ca92044928..38ca8f3d2c 100755 --- a/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockClientConverterSpec.groovy +++ b/spring-cloud-contract-tools/spring-cloud-contract-converters/src/test/groovy/org/springframework/cloud/contract/verifier/wiremock/DslToWireMockClientConverterSpec.groovy @@ -16,6 +16,7 @@ package org.springframework.cloud.contract.verifier.wiremock +import com.github.tomakehurst.wiremock.stubbing.StubMapping import org.junit.Rule import org.junit.rules.TemporaryFolder import org.skyscreamer.jsonassert.JSONAssert @@ -223,6 +224,37 @@ class DslToWireMockClientConverterSpec extends Specification { ''', json, false) } + + @Issue("94") + def "should create stub when response has only one side of the dynamic value"() { + given: + def converter = new DslToWireMockClientConverter() + and: + File file = tmpFolder.newFile("dsl-dynamic.groovy") + file.write(""" + org.springframework.cloud.contract.spec.Contract.make { + request { + method 'GET' + urlPath '/foos' + } + response { + status 200 + body( + digit: \$(producer(regex('[0-9]{1}'))), + id: \$(producer(regex(number()))) + ) + } + } +""") + when: + String json = converter.convertContent("test", new ContractMetadata(file.toPath(), false, 0, null)) + StubMapping.buildFrom(json) + then: + noExceptionThrown() + and: + !json.contains('cursor') + } + def 'should convert dsl to wiremock to show it in the docs'() { given: def converter = new DslToWireMockClientConverter() 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 e1c6ecf4d2..713af9a1dc 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 @@ -29,7 +29,6 @@ import org.springframework.cloud.contract.verifier.util.ContentType import static org.springframework.cloud.contract.verifier.util.ContentUtils.recognizeContentTypeFromContent import static org.springframework.cloud.contract.verifier.util.ContentUtils.recognizeContentTypeFromHeader - /** * Converts a {@link Request} into {@link ResponseDefinition} *