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 65379af459..fdf1979381 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 @@ -88,17 +88,20 @@ class JUnitMessagingMethodBodyBuilder extends MessagingMethodBodyBuilder { @Override protected void processHeaderElement(BlockBuilder blockBuilder, String property, String value) { - blockBuilder.addLine("assertThat(response.getHeader(\"$property\")).${createHeaderComparison(value)}") + blockBuilder.addLine("assertThat(response.getHeader(\"$property\")).isNotNull();") + blockBuilder.addLine("assertThat(response.getHeader(\"$property\").toString()).${createHeaderComparison(value)}") } @Override protected void processHeaderElement(BlockBuilder blockBuilder, String property, Pattern pattern) { - blockBuilder.addLine("assertThat(response.getHeader(\"$property\")).${createHeaderComparison(pattern)}") + blockBuilder.addLine("assertThat(response.getHeader(\"$property\")).isNotNull();") + blockBuilder.addLine("assertThat(response.getHeader(\"$property\").toString()).${createHeaderComparison(pattern)}") } @Override protected void processHeaderElement(BlockBuilder blockBuilder, String property, ExecutionProperty exec) { - blockBuilder.addLine("${exec.insertValue("response.getHeader(\"$property\")")};") + blockBuilder.addLine("assertThat(response.getHeader(\"$property\")).isNotNull();") + blockBuilder.addLine("${exec.insertValue("response.getHeader(\"$property\").toString()")};") } @Override @@ -110,7 +113,7 @@ class JUnitMessagingMethodBodyBuilder extends MessagingMethodBodyBuilder { protected void validateResponseHeadersBlock(BlockBuilder bb) { bb.addLine("""ContractVerifierMessage response = contractVerifierMessaging.receive("${outputMessage.sentTo.serverValue}");""") bb.addLine("""assertThat(response).isNotNull();""") - outputMessage.headers?.executeForEachHeader { Header header ->\ + outputMessage.headers?.executeForEachHeader { Header header -> processHeaderElement(bb, header.name, header.serverValue) } } 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 30de7ed2e0..d9cbb47f43 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 @@ -73,17 +73,17 @@ class SpockMessagingMethodBodyBuilder extends MessagingMethodBodyBuilder { @Override protected void processHeaderElement(BlockBuilder blockBuilder, String property, ExecutionProperty exec) { - blockBuilder.addLine("${exec.insertValue("response.getHeader(\'$property\')")}") + blockBuilder.addLine("${exec.insertValue("response.getHeader(\'$property\')?.toString()")}") } @Override protected void processHeaderElement(BlockBuilder blockBuilder, String property, String value) { - blockBuilder.addLine("response.getHeader('$property') ${convertHeaderComparison(value)}") + blockBuilder.addLine("response.getHeader('$property')?.toString() ${convertHeaderComparison(value)}") } @Override protected void processHeaderElement(BlockBuilder blockBuilder, String property, Pattern value) { - blockBuilder.addLine("response.getHeader('$property') ${convertHeaderComparison(value)}") + blockBuilder.addLine("response.getHeader('$property')?.toString() ${convertHeaderComparison(value)}") } @Override 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 266b68bd91..01fae3f1b3 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 @@ -59,7 +59,7 @@ def contractDsl = Contract.make { then: ContractVerifierMessage response = contractVerifierMessaging.receive('activemq:output') assert response != null - response.getHeader('BOOK-NAME') == 'foo' + response.getHeader('BOOK-NAME')?.toString() == 'foo' and: DocumentContext parsedJson = JsonPath.parse(contractVerifierObjectMapper.writeValueAsString(response.payload)) assertThatJson(parsedJson).field("bookName").isEqualTo("foo") @@ -99,7 +99,8 @@ def contractDsl = Contract.make { // then: ContractVerifierMessage response = contractVerifierMessaging.receive("activemq:output"); assertThat(response).isNotNull(); - assertThat(response.getHeader("BOOK-NAME")).isEqualTo("foo"); + assertThat(response.getHeader("BOOK-NAME")).isNotNull(); + assertThat(response.getHeader("BOOK-NAME").toString()).isEqualTo("foo"); // and: DocumentContext parsedJson = JsonPath.parse(contractVerifierObjectMapper.writeValueAsString(response.getPayload())); assertThatJson(parsedJson).field("bookName").isEqualTo("foo"); @@ -154,7 +155,7 @@ when: then: ContractVerifierMessage response = contractVerifierMessaging.receive('jms:output') assert response !- null - response.getHeader('BOOK-NAME') == 'foo' + response.getHeader('BOOK-NAME')?.toString() == 'foo' and: DocumentContext parsedJson = JsonPath.parse(contractVerifierObjectMapper.writeValueAsString(response.payload)) assertThatJson(parsedJson).field("bookName").isEqualTo("foo") @@ -207,7 +208,8 @@ and: // then: ContractVerifierMessage response = contractVerifierMessaging.receive("jms:output"); assertThat(response).isNotNull(); - assertThat(response.getHeader("BOOK-NAME")).isEqualTo("foo"); + assertThat(response.getHeader("BOOK-NAME")).isNotNull(); + assertThat(response.getHeader("BOOK-NAME").toString()).isEqualTo("foo"); // and: DocumentContext parsedJson = JsonPath.parse(contractVerifierObjectMapper.writeValueAsString(response.getPayload())); assertThatJson(parsedJson).field("bookName").isEqualTo("foo");