Calling toString on getting messaging headers

With contract like this

```
	// output message of the contract
	outputMessage {
		// destination to which the output message will be sent
		sentTo 'verifications'
		// the body of the output message
		body(
			eligible: true
		)
		headers {
			header("contentType", applicationJsonUtf8())
		}
	}
```

the generated test produces

```
ContractVerifierMessage response = contractVerifierMessaging.receive("verifications");
assertThat(response.getHeader("contentType")).isEqualTo("application/json;charset=UTF-8");
```

The headers in the response is a MimeType not a String so the equality check fails.

fixes #297
This commit is contained in:
Marcin Grzejszczak
2017-05-11 11:37:50 +02:00
parent e459763e7c
commit 4ddae01bf9
3 changed files with 16 additions and 11 deletions

View File

@@ -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)
}
}

View File

@@ -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

View File

@@ -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");