From e68448281fc7ae1fae680037c135e42287e88a7a Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Sun, 16 Dec 2018 22:54:57 +0100 Subject: [PATCH] Revert "Fixed invalid multiline json reading" This reverts commit 923faef7d3d76e7e33b79a365f136cf32bf78802. --- .../spec/internal/FromFileProperty.groovy | 4 +- .../JUnitMessagingMethodBodyBuilder.groovy | 3 +- .../builder/JUnitMethodBodyBuilder.groovy | 2 +- .../JaxRsClientJUnitMethodBodyBuilder.groovy | 9 ---- ...kMethodRequestProcessingBodyBuilder.groovy | 9 ---- .../SpockMessagingMethodBodyBuilder.groovy | 3 +- ...kMethodRequestProcessingBodyBuilder.groovy | 2 +- .../WireMockResponseStubStrategy.groovy | 4 +- .../verifier/util/MapConverter.groovy | 3 -- .../builder/MethodBodyBuilderSpec.groovy | 42 +------------------ .../builder/SingleTestGeneratorSpec.groovy | 10 ++--- .../verifier/util/SyntaxChecker.groovy | 2 - .../src/test/resources/classpath/request.json | 4 +- .../test/resources/classpath/response.json | 4 +- 14 files changed, 16 insertions(+), 85 deletions(-) diff --git a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/FromFileProperty.groovy b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/FromFileProperty.groovy index b3416238cc..b472c8f3d7 100644 --- a/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/FromFileProperty.groovy +++ b/spring-cloud-contract-spec/src/main/groovy/org/springframework/cloud/contract/spec/internal/FromFileProperty.groovy @@ -33,7 +33,7 @@ import java.nio.charset.Charset class FromFileProperty implements Serializable { final File file - final String charset + final Charset charset final Class type FromFileProperty(File file, Class type) { @@ -43,7 +43,7 @@ class FromFileProperty implements Serializable { FromFileProperty(File file, Class type, Charset charset) { this.file = file this.type = type - this.charset = charset.toString() + this.charset = charset } boolean isString() { diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnitMessagingMethodBodyBuilder.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnitMessagingMethodBodyBuilder.groovy index a1a0270af1..887e67991b 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnitMessagingMethodBodyBuilder.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnitMessagingMethodBodyBuilder.groovy @@ -91,8 +91,7 @@ class JUnitMessagingMethodBodyBuilder extends MessagingMethodBodyBuilder { return "assertThat(response.getPayloadAsByteArray()).isEqualTo(" + readBytesFromFileString(value, CommunicationType.RESPONSE) + ")" } - return "assertThat(response.getPayload()).isEqualTo(" + - readStringFromFileString(value, CommunicationType.RESPONSE) +")" + return getResponseBodyPropertyComparisonString(property, value.asString()) } @Override diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnitMethodBodyBuilder.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnitMethodBodyBuilder.groovy index c68cfe84c2..282575ff39 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnitMethodBodyBuilder.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JUnitMethodBodyBuilder.groovy @@ -126,7 +126,7 @@ abstract class JUnitMethodBodyBuilder extends RequestProcessingMethodBodyBuilder return "assertThat(response.getBody().asByteArray()).isEqualTo(" + readBytesFromFileString(value, CommunicationType.RESPONSE) + ")" } - return "assertThat(response.getBody()).isEqualTo(" + readStringFromFileString(value, CommunicationType.RESPONSE) + ")" + return getResponseBodyPropertyComparisonString(property, value.asString()) } @Override diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientJUnitMethodBodyBuilder.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientJUnitMethodBodyBuilder.groovy index aad6c82d35..527df7ebc3 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientJUnitMethodBodyBuilder.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientJUnitMethodBodyBuilder.groovy @@ -164,15 +164,6 @@ class JaxRsClientJUnitMethodBodyBuilder extends JUnitMethodBodyBuilder { bb.addLine("assertThat(response.getStatus()).isEqualTo($response.status.serverValue);") } - @Override - protected String getResponseBodyPropertyComparisonString(String property, FromFileProperty value) { - if (value.isByte()) { - return "assertThat(response.readEntity(byte[].class)).isEqualTo(" + - readBytesFromFileString(value, CommunicationType.RESPONSE) + ")" - } - return "assertThat(response.readEntity(String.class)).isEqualTo(" + readStringFromFileString(value, CommunicationType.RESPONSE) + ")" - } - @Override protected void validateResponseHeadersBlock(BlockBuilder bb) { response.headers?.executeForEachHeader { Header header -> diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientSpockMethodRequestProcessingBodyBuilder.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientSpockMethodRequestProcessingBodyBuilder.groovy index a92cf917df..abaec03f84 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientSpockMethodRequestProcessingBodyBuilder.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/JaxRsClientSpockMethodRequestProcessingBodyBuilder.groovy @@ -77,15 +77,6 @@ class JaxRsClientSpockMethodRequestProcessingBodyBuilder extends SpockMethodRequ } } - @Override - protected String getResponseBodyPropertyComparisonString(String property, FromFileProperty value) { - if (value.isByte()) { - return "response.readEntity(byte[]) == " + - readBytesFromFileString(value, CommunicationType.RESPONSE) - } - return "response.readEntity(String) == " + readStringFromFileString(value, CommunicationType.RESPONSE) - } - protected void appendRequestWithRequiredResponseContentType(BlockBuilder bb) { String acceptHeader = getHeader("Accept") if (acceptHeader) { diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingMethodBodyBuilder.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingMethodBodyBuilder.groovy index 720c050ffb..fd046101bb 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingMethodBodyBuilder.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMessagingMethodBodyBuilder.groovy @@ -169,8 +169,7 @@ class SpockMessagingMethodBodyBuilder extends MessagingMethodBodyBuilder { return "response.payloadAsByteArray == " + readBytesFromFileString(value, CommunicationType.RESPONSE) } - return "response.payload == " + - readStringFromFileString(value, CommunicationType.RESPONSE) + return getResponseBodyPropertyComparisonString(property, value.asString()) } @Override diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMethodRequestProcessingBodyBuilder.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMethodRequestProcessingBodyBuilder.groovy index 1df42b117f..e904b2b59d 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMethodRequestProcessingBodyBuilder.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/builder/SpockMethodRequestProcessingBodyBuilder.groovy @@ -113,7 +113,7 @@ abstract class SpockMethodRequestProcessingBodyBuilder extends RequestProcessing return "response.body.asByteArray() == " + readBytesFromFileString(value, CommunicationType.RESPONSE) } - return "response.body == " + readStringFromFileString(value, CommunicationType.RESPONSE) + return getResponseBodyPropertyComparisonString(property, value.asString()) } @Override 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 4ddb43ac9f..211fddd54d 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 @@ -90,9 +90,7 @@ class WireMockResponseStubStrategy extends BaseWireMockStubStrategy { if (contentType == ContentType.UNKNOWN) { contentType = recognizeContentTypeFromContent(body) } - if (body instanceof byte[]) { - builder.withBody(body) - } else if (body instanceof FromFileProperty && body.isByte()) { + if (body instanceof FromFileProperty && body.isByte()) { builder.withBody(body.asBytes()) } else { builder.withBody(parseBody(body, contentType)) diff --git a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/MapConverter.groovy b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/MapConverter.groovy index de6b633b06..6b9c045806 100644 --- a/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/MapConverter.groovy +++ b/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/util/MapConverter.groovy @@ -18,7 +18,6 @@ package org.springframework.cloud.contract.verifier.util import groovy.json.JsonSlurper import org.springframework.cloud.contract.spec.internal.DslProperty -import org.springframework.cloud.contract.spec.internal.FromFileProperty import org.springframework.cloud.contract.verifier.template.HandlebarsTemplateProcessor import org.springframework.cloud.contract.verifier.template.TemplateProcessor /** @@ -131,8 +130,6 @@ class MapConverter { } return it }) - } else if (it instanceof FromFileProperty) { - return it.isByte() ? it.asBytes() : it.asString() } return it } diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy index 28b647e21e..b1603e15a0 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MethodBodyBuilderSpec.groovy @@ -785,43 +785,6 @@ DocumentContext parsedJson = JsonPath.parse(json); WebTestClientJUnitMethodBodyBuilder.simpleName | { Contract dsl -> new WebTestClientJUnitMethodBodyBuilder(dsl, properties, classDataForMethod) } } - def 'should work with files that have new lines [#methodBuilderName]'() { - given: - Contract contractDsl = Contract.make { - request { - method('PUT') - headers { - contentType(applicationJson()) - } - body(file("classpath/request.json")) - url("/1") - } - response { - status OK() - body(file("classpath/response.json")) - headers { - contentType(textPlain()) - } - } - } - MethodBodyBuilder builder = methodBuilder(contractDsl) - BlockBuilder blockBuilder = new BlockBuilder(' ') - when: - builder.appendTo(blockBuilder) - then: - String test = blockBuilder.toString() - SyntaxChecker.tryToCompileWithoutCompileStatic(methodBuilderName, test) - and: - stubMappingIsValidWireMockStub(contractDsl) - where: - methodBuilderName | methodBuilder - HttpSpockMethodRequestProcessingBodyBuilder.simpleName | { Contract dsl -> new HttpSpockMethodRequestProcessingBodyBuilder(dsl, properties, classDataForMethod) } - MockMvcJUnitMethodBodyBuilder.simpleName | { Contract dsl -> new MockMvcJUnitMethodBodyBuilder(dsl, properties, classDataForMethod) } - JaxRsClientSpockMethodRequestProcessingBodyBuilder.simpleName | { Contract dsl -> new JaxRsClientSpockMethodRequestProcessingBodyBuilder(dsl, properties, classDataForMethod) } - JaxRsClientJUnitMethodBodyBuilder.simpleName | { Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties, classDataForMethod) } - WebTestClientJUnitMethodBodyBuilder.simpleName | { Contract dsl -> new WebTestClientJUnitMethodBodyBuilder(dsl, properties, classDataForMethod) } - } - @Issue('#509') def 'classToCheck() should return class of object'() { given: @@ -935,7 +898,6 @@ DocumentContext parsedJson = JsonPath.parse(json); String test = blockBuilder.toString() requestMatcher(test) responseMatcher(test) - SyntaxChecker.tryToCompile(methodBuilderName, test) where: methodBuilderName | methodBuilder | requestMatcher | responseMatcher HttpSpockMethodRequestProcessingBodyBuilder.simpleName | { Contract dsl -> new HttpSpockMethodRequestProcessingBodyBuilder(dsl, properties, classDataForMethod) } | { String string -> @@ -951,12 +913,12 @@ DocumentContext parsedJson = JsonPath.parse(json); JaxRsClientSpockMethodRequestProcessingBodyBuilder.simpleName | { Contract dsl -> new JaxRsClientSpockMethodRequestProcessingBodyBuilder(dsl, properties, classDataForMethod) } | { String string -> string.contains('entity(fileToBytes(this, "some_method_request_request.pdf")') } | { String string -> - string.contains('response.readEntity(byte[]) == fileToBytes(this, "some_method_response_response.pdf")') + string.contains('response.body.asByteArray() == fileToBytes(this, "some_method_response_response.pdf")') } JaxRsClientJUnitMethodBodyBuilder.simpleName | { Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties, classDataForMethod) } | { String string -> string.contains('entity(fileToBytes(this, "some_method_request_request.pdf")') } | { String string -> - string.contains('assertThat(response.readEntity(byte[].class)).isEqualTo(fileToBytes(this, "some_method_response_response.pdf"));') + string.contains('assertThat(response.getBody().asByteArray()).isEqualTo(fileToBytes(this, "some_method_response_response.pdf"));') } WebTestClientJUnitMethodBodyBuilder.simpleName | { Contract dsl -> new WebTestClientJUnitMethodBodyBuilder(dsl, properties, classDataForMethod) } | { String string -> string.contains('.body(fileToBytes(this, "some_method_request_request.pdf"));') diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy index 59c858daef..05d10f3f1b 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy @@ -614,7 +614,7 @@ class SingleTestGeneratorSpec extends Specification { and: String test = new File(temp, "a/b/ContractVerifier${getTestName(testFramework)}").text test.contains('readFromFile_request_request.json') - test.contains('readFromFile_response_response.json') + test.contains('RESPONSE') where: testFramework << [JUNIT, JUNIT5, SPOCK] } @@ -639,7 +639,7 @@ class SingleTestGeneratorSpec extends Specification { and: String test = new File(temp, "a/b/ContractVerifier${getTestName(testFramework)}").text test.contains('readFromFile_request_request.json') - test.contains('readFromFile_response_response.json') + test.contains('RESPONSE') where: testFramework << [JUNIT, JUNIT5, SPOCK] } @@ -664,7 +664,7 @@ class SingleTestGeneratorSpec extends Specification { and: String test = new File(temp, "a/b/ContractVerifier${getTestName(testFramework)}").text test.contains('readFromFile_request_request.json') - test.contains('readFromFile_response_response.json') + test.contains('RESPONSE') where: testFramework << [JUNIT, JUNIT5, SPOCK] } @@ -689,7 +689,7 @@ class SingleTestGeneratorSpec extends Specification { and: String test = new File(temp, "a/b/ContractVerifier${getTestName(testFramework)}").text test.contains('readFromFile_request_request.json') - test.contains('readFromFile_response_response.json') + test.contains('RESPONSE') where: testFramework << [JUNIT, JUNIT5, SPOCK] } @@ -713,7 +713,7 @@ class SingleTestGeneratorSpec extends Specification { and: String test = new File(temp, "org/springframework/cloud/contract/verifier/tests/ContractVerifier${getTestName(testFramework)}").text test.contains('readFromFile_request_request.json') - test.contains('readFromFile_response_response.json') + test.contains('RESPONSE') where: testFramework << [JUNIT, JUNIT5, SPOCK] } diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/util/SyntaxChecker.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/util/SyntaxChecker.groovy index ffe23cf1b9..600077e7f5 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/util/SyntaxChecker.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/util/SyntaxChecker.groovy @@ -67,7 +67,6 @@ class SyntaxChecker { "${RestAssuredMockMvc.name}.when", "${RestAssured.name}.*", "${Entity.name}.*", - "${ContractVerifierUtil.name}.fileToBytes", "${ContractVerifierMessagingUtil.name}.headers", "${JsonAssertion.name}.assertThatJson", "${SpringCloudContractAssertions.name}.assertThat" @@ -76,7 +75,6 @@ class SyntaxChecker { private static final String WEB_TEST_CLIENT_STATIC_IMPORTS = [ "${RestAssuredWebTestClient.name}.*", "${Entity.name}.*", - "${ContractVerifierUtil.name}.fileToBytes", "${ContractVerifierMessagingUtil.name}.headers", "${JsonAssertion.name}.assertThatJson", "${SpringCloudContractAssertions.name}.assertThat" diff --git a/spring-cloud-contract-verifier/src/test/resources/classpath/request.json b/spring-cloud-contract-verifier/src/test/resources/classpath/request.json index 47012fac7f..51674161be 100644 --- a/spring-cloud-contract-verifier/src/test/resources/classpath/request.json +++ b/spring-cloud-contract-verifier/src/test/resources/classpath/request.json @@ -1,3 +1 @@ -{ - "status" : "REQUEST" -} \ No newline at end of file +{ "status" : "REQUEST" } \ No newline at end of file diff --git a/spring-cloud-contract-verifier/src/test/resources/classpath/response.json b/spring-cloud-contract-verifier/src/test/resources/classpath/response.json index 2d75dce26d..b7561f66d1 100644 --- a/spring-cloud-contract-verifier/src/test/resources/classpath/response.json +++ b/spring-cloud-contract-verifier/src/test/resources/classpath/response.json @@ -1,3 +1 @@ -{ - "status" : "RESPONSE" -} \ No newline at end of file +{ "status" : "RESPONSE" } \ No newline at end of file