From 2eea2152ca97c02bb644c30f4147127eda9cea97 Mon Sep 17 00:00:00 2001 From: cselagea <36129697+cselagea@users.noreply.github.com> Date: Sat, 22 May 2021 02:42:52 -0600 Subject: [PATCH] Fix request headers occurring after absent header not being added to generated test method. Fixes gh-1647 (#1663) --- .../contract/verifier/builder/MockMvcHeadersGiven.java | 2 +- .../contract/verifier/builder/MethodBodyBuilderSpec.groovy | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcHeadersGiven.java b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcHeadersGiven.java index eb2c21b7f5..194a4e8d53 100644 --- a/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcHeadersGiven.java +++ b/spring-cloud-contract-verifier/src/main/java/org/springframework/cloud/contract/verifier/builder/MockMvcHeadersGiven.java @@ -44,7 +44,7 @@ class MockMvcHeadersGiven implements Given { while (iterator.hasNext()) { Header header = iterator.next(); if (ofAbsentType(header)) { - return; + continue; } if (iterator.hasNext()) { bb.addLine(string(header)); 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 99a1c61f36..d5db16014c 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 @@ -520,7 +520,7 @@ class MethodBodyBuilderSpec extends Specification implements WireMockStubVerifie } } - @Issue('#424') + @Issue(['#424','#1647']) def 'should not put an absent header to the request [#methodBuilderName]'() { given: Contract contractDsl = Contract.make { @@ -528,7 +528,9 @@ class MethodBodyBuilderSpec extends Specification implements WireMockStubVerifie method 'GET' url '/mytest' headers { + header('header-before', anyNonBlankString()) header('myheader', absent()) + header('header-after', anyNonBlankString()) } } response { @@ -540,6 +542,8 @@ class MethodBodyBuilderSpec extends Specification implements WireMockStubVerifie String test = singleTestGenerator(contractDsl) then: !test.contains('myheader') + test.contains('header-before') + test.contains('header-after') and: SyntaxChecker. tryToCompileWithoutCompileStatic(methodBuilderName, test)