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 4c59a8261c..708d07f833 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 @@ -101,6 +101,10 @@ class Request extends Common { this.urlPath = new UrlPath(path) } + void urlPath(GString path) { + this.urlPath = new UrlPath(path) + } + void urlPath(DslProperty path) { this.urlPath = new UrlPath(path) } @@ -111,6 +115,12 @@ class Request extends Common { closure() } + void urlPath(GString path, @DelegatesTo(UrlPath) Closure closure) { + this.urlPath = new UrlPath(path) + closure.delegate = urlPath + closure() + } + void urlPath(DslProperty path, @DelegatesTo(UrlPath) Closure closure) { this.urlPath = new UrlPath(path) closure.delegate = urlPath diff --git a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/UrlPath.groovy b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/UrlPath.groovy index 2bdac4f8c3..cebb7d3c9e 100644 --- a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/UrlPath.groovy +++ b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/UrlPath.groovy @@ -35,6 +35,10 @@ class UrlPath extends Url { super(path) } + UrlPath(GString path) { + super(path) + } + UrlPath(DslProperty path) { super(path) } diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcMethodBodyBuilderSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcMethodBodyBuilderSpec.groovy index 27d8e5a85f..ccac461733 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcMethodBodyBuilderSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MockMvcMethodBodyBuilderSpec.groovy @@ -626,7 +626,7 @@ class MockMvcMethodBodyBuilderSpec extends Specification implements WireMockStub Contract contractDsl = Contract.make { request { method 'GET' - urlPath('/users') { + urlPath("/users/${value(regex("1"))}") { queryParameters { parameter 'limit': $(consumer(equalTo("20")), producer(equalTo("10"))) parameter 'offset': $(consumer(containing("20")), producer(equalTo("20"))) @@ -665,7 +665,7 @@ class MockMvcMethodBodyBuilderSpec extends Specification implements WireMockStub test.contains('''.queryParam("age","99")''') test.contains('''.queryParam("name","Denis.Stepanov")''') test.contains('''.queryParam("email","bob@email.com")''') - test.contains('''.get("/users")''') + test.contains('''.get("/users/1")''') test.contains('assertThatJson(parsedJson).field("[\'property1\']").isEqualTo("a")') test.contains('assertThatJson(parsedJson).field("[\'property2\']").isEqualTo("b")') and: