From bbedfdf9f30f334f2fcf3b8a62110849d151e786 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 27 Apr 2023 13:45:19 +0200 Subject: [PATCH] WIP --- .../builder/MethodBodyBuilderSpec.groovy | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) 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 ffdb6d08d2..a86f7ed3e3 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 @@ -1699,6 +1699,52 @@ class MethodBodyBuilderSpec extends Specification implements WireMockStubVerifie } } + @Issue("#1790") + def "should work with escaped values in headers and body [#methodBuilderName]"() { + given: + Contract contractDsl = Contract.make { + request { + name("test") + method 'GET' + urlPath('/test') + } + response { + status OK() + body( 'test': "\"escaped-body\"") + headers { + contentType('application/json') + header('Escaped-Header', "\"escaped-header\"") + } + } + } + methodBuilder() + when: + String test = singleTestGenerator(contractDsl) + then: + SyntaxChecker.tryToCompileWithoutCompileStatic(methodBuilderName, test) + expectedHeaderAssertion(test) + test.contains("""assertThatJson(parsedJson).field("['test']").isEqualTo("\\\"escaped-body\\\"")""") + and: + stubMappingIsValidWireMockStub(contractDsl) + where: + methodBuilderName | methodBuilder | expectedHeaderAssertion + "spock" | { + properties.testFramework = TestFramework.SPOCK + } | { String testCode -> assert testCode.contains("""response.header("Escaped-Header") == '''\\"escaped-header\\"'''"""); return true } + "mockmvc" | { + properties.testMode = TestMode.MOCKMVC + } | { String testCode -> assert testCode.contains("""assertThat(response.header("Escaped-Header")).isEqualTo("\\\"escaped-header\\\"")"""); return true } + "jaxrs-spock" | { + properties.testFramework = TestFramework.SPOCK; properties.testMode = TestMode.JAXRSCLIENT + } | { String testCode -> assert testCode.contains("""response.header("Escaped-Header") == '''\\"escaped-header\\"'''"""); return true } + "jaxrs" | { + properties.testFramework = TestFramework.JUNIT; properties.testMode = TestMode.JAXRSCLIENT + } | { String testCode -> assert testCode.contains("""assertThat(response.header("Escaped-Header")).isEqualTo("\\\"escaped-header\\\"")"""); return true } + "testNG" | { + properties.testFramework = TestFramework.TESTNG + } | { String testCode -> assert testCode.contains("""assertThat(response.header("Escaped-Header")).isEqualTo("\\\"escaped-header\\\"")"""); return true } + } + @Issue("#1052") def "should work with large numbers [#methodBuilderName]"() { given: