From aa68196b27e9df8000128722370d10b38c2b6512 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 28 Jun 2017 12:46:56 +0200 Subject: [PATCH] Added tests for #336 fixes #336 --- .../MessagingMethodBodyBuilderSpec.groovy | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MessagingMethodBodyBuilderSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MessagingMethodBodyBuilderSpec.groovy index 703b68c885..ed0fd0e856 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MessagingMethodBodyBuilderSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/MessagingMethodBodyBuilderSpec.groovy @@ -18,6 +18,7 @@ package org.springframework.cloud.contract.verifier.builder import org.springframework.cloud.contract.spec.Contract import org.springframework.cloud.contract.verifier.config.ContractVerifierConfigProperties +import spock.lang.Issue import spock.lang.Shared import spock.lang.Specification /** @@ -454,4 +455,91 @@ Contract.make { stripped(test) == stripped(expectedMsg) } + @Issue("336") + def "should generate tests with message headers containing regular expression for JUnit"() { + given: + def contractDsl = + org.springframework.cloud.contract.spec.Contract.make { + label 'trigger_event' + + input { + triggeredBy('requestIsCalled()') + } + + outputMessage { + sentTo 'topic.rateablequote' + headers { + header('processId', value(producer(regex('[0-9]+')), consumer('123'))) + } + body([ + eventId: value(producer(regex('[0-9]+')), consumer('1')) + ]) + } + } + MethodBodyBuilder builder = new JUnitMessagingMethodBodyBuilder(contractDsl, properties) + BlockBuilder blockBuilder = new BlockBuilder(" ") + when: + builder.appendTo(blockBuilder) + def test = blockBuilder.toString() + then: + String expectedMsg = + ''' + // when: + requestIsCalled(); + + // then: + ContractVerifierMessage response = contractVerifierMessaging.receive("topic.rateablequote"); + assertThat(response).isNotNull(); + assertThat(response.getHeader("processId")).isNotNull(); + assertThat(response.getHeader("processId").toString()).matches("[0-9]+"); + // and: + DocumentContext parsedJson = JsonPath.parse(contractVerifierObjectMapper.writeValueAsString(response.getPayload())); + assertThatJson(parsedJson).field("['eventId']").matches("[0-9]+"); +''' + stripped(test) == stripped(expectedMsg) + } + + @Issue("336") + def "should generate tests with message headers containing regular expression for Spock"() { + given: + def contractDsl = + org.springframework.cloud.contract.spec.Contract.make { + label 'trigger_event' + + input { + triggeredBy('requestIsCalled()') + } + + outputMessage { + sentTo 'topic.rateablequote' + headers { + header('processId', value(producer(regex('[0-9]+')), consumer('123'))) + } + body([ + eventId: value(producer(regex('[0-9]+')), consumer('1')) + ]) + } + } + MethodBodyBuilder builder = new SpockMessagingMethodBodyBuilder(contractDsl, properties) + BlockBuilder blockBuilder = new BlockBuilder(" ") + when: + builder.appendTo(blockBuilder) + def test = blockBuilder.toString() + then: + String expectedMsg = + ''' + when: + requestIsCalled() + + then: + ContractVerifierMessage response = contractVerifierMessaging.receive('topic.rateablequote') + assert response != null + response.getHeader('processId')?.toString() ==~ java.util.regex.Pattern.compile('[0-9]+') + and: + DocumentContext parsedJson = JsonPath.parse(contractVerifierObjectMapper.writeValueAsString(response.payload)) + assertThatJson(parsedJson).field("['eventId']").matches("[0-9]+") +''' + stripped(test) == stripped(expectedMsg) + } + }