GH-919 Fix regression that was modifying result message

Resolves #919
This commit is contained in:
Oleg Zhurakousky
2022-08-24 16:19:22 +02:00
parent 9ad68f40f8
commit e83b0dfabe
2 changed files with 20 additions and 5 deletions

View File

@@ -156,6 +156,17 @@ public class BeanFactoryAwareFunctionRegistryTests {
assertThat(c.size()).isEqualTo(2);
}
@Test
public void testReturnedMessageIsUnmodified() throws Exception {
FunctionCatalog catalog = this.configureCatalog();
Function<Message<String>, Message<byte[]>> function = catalog.lookup("uppercaseMessage", "application/json");
assertThat(function).isNotNull();
Message<byte[]> result = function.apply(MessageBuilder.withPayload("bob").setHeader("foo", "foo").build());
assertThat(result.getHeaders().containsKey("foo")).isFalse();
assertThat(result.getHeaders().containsKey("bar")).isTrue();
}
@SuppressWarnings("unchecked")
@Test
public void testDefaultLookup() throws Exception {
@@ -1078,6 +1089,15 @@ public class BeanFactoryAwareFunctionRegistryTests {
return v -> v.toUpperCase();
}
@Bean
public Function<Message<String>, Message<String>> uppercaseMessage() {
return message -> {
Message<String> result = MessageBuilder.fromMessage(message)
.removeHeader("foo").setHeader("bar", "bar").build();
return result;
};
}
@Bean
public Function<String, Void> consumerFunction() {
return v -> {