From 31f43648ac59ac1cc0d63314a60cc2cd16179fbe Mon Sep 17 00:00:00 2001 From: Artem Ptushkin Date: Fri, 14 Jun 2019 16:55:13 +0300 Subject: [PATCH] Fixed issue with content is not allowed in prolog for body from the xml file (#1107) * Created test 'should create stub with body from the file' - failed * Fixed 'Content is not allowed in prolog' for body from the xml file; fixes issue #1105 --- .../spec/internal/FromFileProperty.groovy | 4 ++ .../dsl/wiremock/WireMockGroovyDslSpec.groovy | 48 +++++++++++++++++++ .../src/test/resources/classpath/request.xml | 5 ++ 3 files changed, 57 insertions(+) create mode 100644 spring-cloud-contract-verifier/src/test/resources/classpath/request.xml 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 fd5edc7783..85456c1363 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 @@ -66,4 +66,8 @@ class FromFileProperty implements Serializable { return this.file.bytes } + @Override + String toString() { + return asString() + } } diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockGroovyDslSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockGroovyDslSpec.groovy index 8dabae12fa..e4164fefe7 100755 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockGroovyDslSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/WireMockGroovyDslSpec.groovy @@ -606,6 +606,54 @@ class WireMockGroovyDslSpec extends Specification implements WireMockStubVerifie stubMappingIsValidWireMockStub(json) } + def 'should create stub with body from the file'() { + given: + org.springframework.cloud.contract.spec.Contract groovyDsl = org.springframework.cloud.contract.spec.Contract.make { + request { + method 'GET' + headers { + header 'Content-Type': 'application/xml' + } + url "/users" + body file('classpath/request.xml') + } + response { + status OK() + } + } + when: + String json = toWireMockClientJsonStub(groovyDsl) + then: + AssertionUtil.assertThatJsonsAreEqual((''' + { + "request": { + "method": "GET", + "url": "/users", + "bodyPatterns": [ + { + "matchesXPath": { + "expression": "/foo/name/text()", + "equalTo": "Jozo" + } + }, + { + "matchesXPath": { + "expression": "/foo/jobId/text()", + "equalTo": "123" + } + } + ] + }, + "response": { + "status": 200, + "transformers" : [ "response-template", "foo-transformer" ] + } + } + '''), json) + and: + stubMappingIsValidWireMockStub(json) + } + def 'should convert groovy dsl stub with regexp Body as String to wireMock stub for the client side'() { given: org.springframework.cloud.contract.spec.Contract groovyDsl = org.springframework.cloud.contract.spec.Contract.make { diff --git a/spring-cloud-contract-verifier/src/test/resources/classpath/request.xml b/spring-cloud-contract-verifier/src/test/resources/classpath/request.xml new file mode 100644 index 0000000000..850972c082 --- /dev/null +++ b/spring-cloud-contract-verifier/src/test/resources/classpath/request.xml @@ -0,0 +1,5 @@ + + + Jozo + 123 + \ No newline at end of file