From 1128449c2d99b2c81cace51275640b08fef7bb90 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Fri, 8 Nov 2019 10:48:01 +0100 Subject: [PATCH 1/2] Fixed missing L for longs in messaging; fixes gh-1052 --- .../JUnitMessagingMethodBodyBuilder.groovy | 3 +- .../SpockMessagingMethodBodyBuilder.groovy | 3 +- .../SpringTestMethodBodyBuildersSpec.groovy | 31 +++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) 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 bf21c7364c..ab8a48e839 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 @@ -115,8 +115,9 @@ class JUnitMessagingMethodBodyBuilder extends MessagingMethodBodyBuilder { @Override protected void processHeaderElement(BlockBuilder blockBuilder, String property, Number value) { blockBuilder.addLine("assertThat(response.getHeader(\"$property\")).isNotNull();") + String valueToSet = value instanceof Long ? value.toString() + "L" : value.toString() blockBuilder. - addLine("assertThat(response.getHeader(\"$property\")).isEqualTo(${value});") + addLine("assertThat(response.getHeader(\"$property\")).isEqualTo(${valueToSet});") } @Override 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 4965ac7563..754a064466 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 @@ -97,7 +97,8 @@ class SpockMessagingMethodBodyBuilder extends MessagingMethodBodyBuilder { @Override protected void processHeaderElement(BlockBuilder blockBuilder, String property, Number value) { - blockBuilder.addLine("response.getHeader('$property') == ${value}") + String valueToSet = value instanceof Long ? value.toString() + "L" : value.toString() + blockBuilder.addLine("response.getHeader('$property') == ${valueToSet}") } @Override diff --git a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SpringTestMethodBodyBuildersSpec.groovy b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SpringTestMethodBodyBuildersSpec.groovy index b6219ab682..5266a442bb 100644 --- a/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SpringTestMethodBodyBuildersSpec.groovy +++ b/spring-cloud-contract-verifier/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SpringTestMethodBodyBuildersSpec.groovy @@ -3002,4 +3002,35 @@ DocumentContext parsedJson = JsonPath.parse(json); JaxRsClientJUnitMethodBodyBuilder.simpleName | { Contract dsl -> new JaxRsClientJUnitMethodBodyBuilder(dsl, properties, generatedClassDataForMethod) } WebTestClientJUnitMethodBodyBuilder.simpleName | { Contract dsl -> new WebTestClientJUnitMethodBodyBuilder(dsl, properties, generatedClassDataForMethod) } } + + @Issue('#1052') + def 'should work with large numbers [#methodBuilderName]'() { + given: + Contract contractDsl = Contract.make { + label 'storage_object_created' + input { + triggeredBy('createStorageObject()') + } + + outputMessage { + sentTo('document_uploads') + headers { + header('objectGeneration', 23094823904823) + } + } + } + MethodBodyBuilder builder = methodBuilder(contractDsl) + BlockBuilder blockBuilder = new BlockBuilder(" ") + and: + builder.appendTo(blockBuilder) + String test = blockBuilder.toString() + when: + SyntaxChecker.tryToRun(methodBuilderName, test.join("\n")) + then: + test.contains('''23094823904823L''') + where: + methodBuilderName | methodBuilder + SpockMessagingMethodBodyBuilder.simpleName | { Contract dsl -> new SpockMessagingMethodBodyBuilder(dsl, properties, generatedClassDataForMethod) } + JUnitMessagingMethodBodyBuilder.simpleName | { Contract dsl -> new JUnitMessagingMethodBodyBuilder(dsl, properties, generatedClassDataForMethod) } + } } From cacd9bb9388306d1bd570672481191625fc1bef3 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Fri, 8 Nov 2019 11:00:50 +0100 Subject: [PATCH 2/2] MAde tests less brittle --- .../provider/wiremock/WireMockHttpServerStubAccessor.groovy | 4 ++++ .../stubrunner/spring/StubRunnerConfigurationSpec.groovy | 1 + 2 files changed, 5 insertions(+) diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStubAccessor.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStubAccessor.groovy index 82b3690440..477c6e592c 100644 --- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStubAccessor.groovy +++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/provider/wiremock/WireMockHttpServerStubAccessor.groovy @@ -22,4 +22,8 @@ class WireMockHttpServerStubAccessor { assert WireMockHttpServerStub.SERVERS.every { it.value.random } return true } + + static void clear() { + WireMockHttpServerStub.SERVERS.clear() + } } diff --git a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy index 9016d3a993..754748006d 100644 --- a/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy +++ b/spring-cloud-contract-stub-runner/src/test/groovy/org/springframework/cloud/contract/stubrunner/spring/StubRunnerConfigurationSpec.groovy @@ -74,6 +74,7 @@ class StubRunnerConfigurationSpec extends Specification { void setupProps() { System.clearProperty("stubrunner.repository.root") System.clearProperty("stubrunner.classifier") + WireMockHttpServerStubAccessor.clear() } def 'should mark all ports as random'() {