From f581bb561f93406ff0da8c8eecf9d96a3af4155e Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 12 May 2015 12:20:25 +0200 Subject: [PATCH] [#5] Adding assertions of patterns --- .../wiremock/WiremockToDslConverter.groovy | 6 ++++-- .../wiremock/WiremockToDslConverterSpec.groovy | 6 +++--- .../codearte/accurest/dsl/internal/Common.groovy | 14 ++++++++++++++ build.gradle | 4 ++++ 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/accurest-converters/src/main/groovy/io/codearte/accurest/wiremock/WiremockToDslConverter.groovy b/accurest-converters/src/main/groovy/io/codearte/accurest/wiremock/WiremockToDslConverter.groovy index 76570ee2b2..543f9eff89 100644 --- a/accurest-converters/src/main/groovy/io/codearte/accurest/wiremock/WiremockToDslConverter.groovy +++ b/accurest-converters/src/main/groovy/io/codearte/accurest/wiremock/WiremockToDslConverter.groovy @@ -4,6 +4,7 @@ import groovy.json.JsonOutput import groovy.json.JsonSlurper import groovy.xml.XmlUtil import io.codearte.accurest.dsl.GroovyDsl +import nl.flotsam.xeger.Xeger import static org.apache.commons.lang3.StringEscapeUtils.escapeJava @@ -17,11 +18,12 @@ class WiremockToDslConverter { def request = wiremockStub.request def response = wiremockStub.response def bodyPatterns = request.bodyPatterns + String urlPattern = request.urlPattern return """\ request { ${request.method ? "method \"\"\"$request.method\"\"\"" : ""} ${request.url ? "url \"\"\"$request.url\"\"\"" : ""} - ${request.urlPattern ? "url \$(client(regex('${escapeJava(request.urlPattern)}')), server(''))" : ""} + ${urlPattern ? "url \$(client(regex('${escapeJava(urlPattern)}')), server('${new Xeger(escapeJava(urlPattern)).generate()}'))" : ""} ${request.urlPath ? "url \"\"\"$request.urlPath\"\"\"" : ""} ${ request.headers ? """headers { @@ -38,7 +40,7 @@ class WiremockToDslConverter { } ${bodyPatterns?.equalTo?.every { it } ? "body('''${bodyPatterns.equalTo[0]}''')" : ''} ${bodyPatterns?.equalToJson?.every { it } ? "body('''${bodyPatterns.equalToJson[0]}''')" : ''} - ${bodyPatterns?.matches?.every { it } ? "body \$(client(regex('${escapeJava(bodyPatterns.matches[0])}')), server(''))" : ""} + ${bodyPatterns?.matches?.every { it } ? "body \$(client(regex('${escapeJava(bodyPatterns.matches[0])}')), server('${new Xeger(escapeJava(bodyPatterns.matches[0])).generate()}'))" : ""} } response { ${response.status ? "status $response.status" : ""} diff --git a/accurest-converters/src/test/groovy/io/codearte/accurest/wiremock/WiremockToDslConverterSpec.groovy b/accurest-converters/src/test/groovy/io/codearte/accurest/wiremock/WiremockToDslConverterSpec.groovy index 98d74e6ca2..b147d9da93 100755 --- a/accurest-converters/src/test/groovy/io/codearte/accurest/wiremock/WiremockToDslConverterSpec.groovy +++ b/accurest-converters/src/test/groovy/io/codearte/accurest/wiremock/WiremockToDslConverterSpec.groovy @@ -102,7 +102,7 @@ class WiremockToDslConverterSpec extends Specification { GroovyDsl expectedGroovyDsl = GroovyDsl.make { request { method 'DELETE' - url $(client(~/\/credit-card-verification-data\/[0-9]+/), server('')) + url $(client(~/\/credit-card-verification-data\/[0-9]+/), server('/credit-card-verification-data/1')) headers { header('Content-Type': 'application/vnd.mymoid-adapter.v2+json; charset=UTF-8') } @@ -361,7 +361,7 @@ class WiremockToDslConverterSpec extends Specification { request { method 'POST' url '/test' - body $(client(~/[0-9]{5}/), server('')) + body $(client(~/[0-9]{5}/), server('12345')) } response { status 200 @@ -482,7 +482,7 @@ class WiremockToDslConverterSpec extends Specification { request { method 'POST' url '/test' - body $(client(~/[0-9]{2}/), server('')) + body $(client(~/[0-9]{2}/), server('12')) } response { status 200 diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Common.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Common.groovy index 91549f6409..608f15eec3 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Common.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Common.groovy @@ -47,10 +47,12 @@ class Common { } DslProperty value(ClientDslProperty client, ServerDslProperty server) { + assertThatSidesMatch(client.clientValue, server.serverValue) return new DslProperty(client.clientValue, server.serverValue) } DslProperty value(ServerDslProperty server, ClientDslProperty client) { + assertThatSidesMatch(client.clientValue, server.serverValue) return new DslProperty(client.clientValue, server.serverValue) } @@ -77,4 +79,16 @@ class Common { ServerDslProperty server(Object serverValue) { return new ServerDslProperty(serverValue) } + + void assertThatSidesMatch(Pattern firstSide, Object secondSide) { + assert secondSide ==~ firstSide + } + + void assertThatSidesMatch(Object firstSide, Pattern secondSide) { + assert secondSide ==~ firstSide + } + + void assertThatSidesMatch(Object firstSide, Object secondSide) { + // do nothing + } } diff --git a/build.gradle b/build.gradle index 28d6b6d0a2..783681eebd 100644 --- a/build.gradle +++ b/build.gradle @@ -47,6 +47,9 @@ subprojects { repositories { mavenLocal() mavenCentral() + maven { + url "https://jitpack.io" + } } //Dependencies in all subprojects - http://solidsoft.wordpress.com/2014/11/13/gradle-tricks-display-dependencies-for-all-subprojects-in-multi-project-build/ @@ -98,6 +101,7 @@ project(':accurest-converters') { compile project(':accurest-core') compile 'org.apache.commons:commons-lang3:3.3.2' compile 'commons-io:commons-io:[2.4,)' + compile 'com.github.marcingrzejszczak:xeger:20130128' testCompile 'com.github.tomakehurst:wiremock:1.53' } }