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/SpringTestMethodBodyBuildersSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SpringTestMethodBodyBuildersSpec.groovy index 0174ee4884..4e7f4081f7 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SpringTestMethodBodyBuildersSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SpringTestMethodBodyBuildersSpec.groovy @@ -641,7 +641,7 @@ class SpringTestMethodBodyBuildersSpec extends Specification implements WireMock 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'))) @@ -680,7 +680,7 @@ class SpringTestMethodBodyBuildersSpec extends Specification implements WireMock 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: