Binary message validation
Binary message validation is not very easy to do especially when it comes to compare data with a given control message. As a tester you want to validate the binary content. In Citrus the way to compare binary message content is to use base64 String encoding. The binary data is encoded as base64 character sequence and there fore is comparable with an expected content.
The received message content does not have to be base64 encoded. Citrus is doing this conversion automatically before validation takes place. The binary data can be anything e.g. images, pdf or gzip content.
The default message validator for binary messages is active by default. Citrus will pick this message validator for all messages of type="binary_base64" . The default message validator implementation can be overwritten by placing a Spring bean with id defaultBinaryBase64MessageValidator to the Spring application context.
<bean id="defaultBinaryBase64MessageValidator" class="com.consol.citrus.validation.text.BinaryBase64MessageValidator"/>
In the test case receiving action we tell Citrus to use binary base64 message validation.
<receive endpoint="httpMessageEndpoint">
<message type="binary_base64">
<data></data>
</message>
</receive>
With the message format type type="binary_base64" Citrus performs the base64 character sequence validation. Incoming message content is automatically encoded as base64 String and compared to the expected data. This way we can make sure that the binary content is as expected.
By the way sending binary base64 messages in Citrus is also very easy. Just use the binary base64 encoding function to do so.
<send endpoint="httpMessageEndpoint">
<message>
<data>citrus:encodeBase64('Hello World!')</data>
</message>
</send>