From 080aae6060be1202d92deabdddf11baf97a1b3a3 Mon Sep 17 00:00:00 2001 From: Denis Stepanov Date: Fri, 12 Jun 2015 15:20:49 +0200 Subject: [PATCH] Revert "Implement selecting compare method by content type" This reverts commit 58b47fd6b4da6641503e34fac41840f22084ad89. --- .../dsl/WiremockRequestStubStrategy.groovy | 15 +--- .../accurest/dsl/internal/Body.groovy | 51 ++--------- .../accurest/dsl/WiremockGroovyDslSpec.groovy | 90 ------------------- 3 files changed, 7 insertions(+), 149 deletions(-) diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/dsl/WiremockRequestStubStrategy.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/dsl/WiremockRequestStubStrategy.groovy index 3390b6456b..298cc1b2ec 100755 --- a/accurest-core/src/main/groovy/io/codearte/accurest/dsl/WiremockRequestStubStrategy.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/dsl/WiremockRequestStubStrategy.groovy @@ -2,7 +2,6 @@ package io.codearte.accurest.dsl import groovy.transform.PackageScope import groovy.transform.TypeChecked import io.codearte.accurest.dsl.internal.ClientRequest -import io.codearte.accurest.dsl.internal.Header import io.codearte.accurest.dsl.internal.MatchingStrategy import io.codearte.accurest.dsl.internal.QueryParameter import io.codearte.accurest.dsl.internal.QueryParameters @@ -96,19 +95,7 @@ class WiremockRequestStubStrategy extends BaseWiremockStubStrategy { } ))]]] } - - return [bodyPatterns: [[(getCompareType()): parseBody(body)]]] - } - - private String getCompareType() { - Header contentType = request.headers?.entries.find { it.name == "Content-Type" } - if (contentType && contentType.clientValue.toString().endsWith("json")) { - return "equalToJson" - } - if (contentType && contentType.clientValue.toString().endsWith("xml")) { - return "equalToXml" - } - return "equalTo" + return [bodyPatterns: [[equalTo: parseBody(body)]]] } protected String parseBody(Object body) { diff --git a/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Body.groovy b/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Body.groovy index c68380f0f2..315135d939 100644 --- a/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Body.groovy +++ b/accurest-core/src/main/groovy/io/codearte/accurest/dsl/internal/Body.groovy @@ -1,6 +1,5 @@ package io.codearte.accurest.dsl.internal -import groovy.json.JsonException import groovy.json.JsonSlurper import groovy.transform.EqualsAndHashCode import groovy.transform.ToString @@ -10,8 +9,6 @@ import org.codehaus.groovy.runtime.GStringImpl import java.util.regex.Matcher import java.util.regex.Pattern -import static org.apache.commons.lang3.StringEscapeUtils.escapeXml11 - @ToString(includePackage = false, includeFields = true, includeNames = true) @EqualsAndHashCode(includeFields = true) class Body extends DslProperty { @@ -58,51 +55,15 @@ class Body extends DslProperty { * @return JSON structure with replaced client / server side parts */ private static Object extractValue(GString bodyAsValue, Closure valueProvider) { - try { - return extractValueForJSON(bodyAsValue, valueProvider) - } catch(JsonException e) { - // Not a JSON format - return extractValueForXML(bodyAsValue, valueProvider) - } - return bodyAsValue - } - - private static Object extractValueForJSON(GString bodyAsValue, Closure valueProvider) { - GString transformedString = new GStringImpl( - bodyAsValue.values.collect { transformJSONStringValue(it, valueProvider) } as Object[], - bodyAsValue.strings.clone() - ) - def parsedJson = new JsonSlurper().parseText(transformedString) + GString gString = new GStringImpl(bodyAsValue.values.clone(), bodyAsValue.strings.clone()) + Object[] values = bodyAsValue.values.collect { it instanceof DslProperty ? valueProvider(it) : it } as Object[] + Object[] valuesWithRegexpsAsTransformedStrings = values.collect { + it instanceof Pattern ? String.format(JSON_VALUE_PATTERN_FOR_REGEX, it.toString()) : it + } as Object[] + def parsedJson = new JsonSlurper().parseText(new GStringImpl(valuesWithRegexpsAsTransformedStrings, gString.strings)) return convertAllTemporaryRegexPlaceholdersBackToPatterns(parsedJson) } - private static GStringImpl extractValueForXML(GString bodyAsValue, Closure valueProvider) { - return new GStringImpl( - bodyAsValue.values.collect { transformXMLStringValue(it, valueProvider) } as Object[], - bodyAsValue.strings.clone() - ) - } - - private static String transformJSONStringValue(Object obj, Closure valueProvider) { - return obj.toString() - } - - private static String transformJSONStringValue(DslProperty dslProperty, Closure valueProvider) { - return transformJSONStringValue(valueProvider(dslProperty), valueProvider) - } - - private static String transformJSONStringValue(Pattern pattern, Closure valueProvider) { - return String.format(JSON_VALUE_PATTERN_FOR_REGEX, pattern.pattern()) - } - - private static String transformXMLStringValue(Object obj, Closure valueProvider) { - return escapeXml11(obj.toString()) - } - - private static String transformXMLStringValue(DslProperty dslProperty, Closure valueProvider) { - return transformXMLStringValue(valueProvider(dslProperty), valueProvider) - } - private static Object convertAllTemporaryRegexPlaceholdersBackToPatterns(parsedJson) { JsonConverter.transformValues(parsedJson, { Object value -> if (value instanceof String) { diff --git a/accurest-core/src/test/groovy/io/codearte/accurest/dsl/WiremockGroovyDslSpec.groovy b/accurest-core/src/test/groovy/io/codearte/accurest/dsl/WiremockGroovyDslSpec.groovy index 4674441a09..7d8e5f1d49 100755 --- a/accurest-core/src/test/groovy/io/codearte/accurest/dsl/WiremockGroovyDslSpec.groovy +++ b/accurest-core/src/test/groovy/io/codearte/accurest/dsl/WiremockGroovyDslSpec.groovy @@ -150,96 +150,6 @@ class WiremockGroovyDslSpec extends WiremockSpec { stubMappingIsValidWiremockStub(wiremockStub) } - def 'should use equalToJson when content type ends with json'() { - given: - GroovyDsl groovyDsl = GroovyDsl.make { - request { - method 'GET' - url "/users" - headers { - header "Content-Type", "customtype/json" - } - body """ - { - "name": "Jan" - } - """ - } - response { - status 200 - } - } - when: - String json = toWiremockClientJsonStub(groovyDsl) - then: - parseJson(json) == parseJson(''' - { - "request": { - "method": "GET", - "url": "/users", - "headers": { - "Content-Type": { - "equalTo": "customtype/json" - } - }, - "bodyPatterns": [ - { - "equalToJson":"{\\"name\\":\\"Jan\\"}" - } - ] - }, - "response": { - "status": 200 - } - } - ''') - and: - stubMappingIsValidWiremockStub(json) - } - - def 'should use equalToXml when content type ends with xml'() { - given: - GroovyDsl groovyDsl = GroovyDsl.make { - request { - method 'GET' - url "/users" - headers { - header "Content-Type", "customtype/xml" - } - body """${value(client('Jozo'), server('Denis'))}${value(client(""), server('1234567890'))}""" - } - response { - status 200 - } - } - when: - String json = toWiremockClientJsonStub(groovyDsl) - then: - parseJson(json) == parseJson(''' - { - "request": { - "method": "GET", - "url": "/users", - "headers": { - "Content-Type": { - "equalTo": "customtype/xml" - } - }, - "bodyPatterns": [ - { - "equalToXml":"Jozo<test>" - } - ] - }, - "response": { - "status": 200 - } - } - ''') - and: - stubMappingIsValidWiremockStub(json) - } - def 'should convert groovy dsl stub with regexp Body as String to wiremock stub for the client side'() { given: GroovyDsl groovyDsl = GroovyDsl.make {