GH-2054 Add test to validate regression with reactive functions

Resolves #2054
This commit is contained in:
Oleg Zhurakousky
2020-11-25 09:11:12 +01:00
parent b48485e7fa
commit f80f85e1a0

View File

@@ -384,7 +384,8 @@ public class ImplicitFunctionBindingTests {
System.clearProperty("spring.cloud.function.definition");
try (ConfigurableApplicationContext context = new SpringApplicationBuilder(
TestChannelBinderConfiguration.getCompleteConfiguration(ReactiveFunctionConfiguration.class))
.web(WebApplicationType.NONE).run("--spring.jmx.enabled=false")) {
.web(WebApplicationType.NONE).run("--spring.jmx.enabled=false",
"--spring.cloud.function.definition=echo")) {
InputDestination inputDestination = context.getBean(InputDestination.class);
OutputDestination outputDestination = context.getBean(OutputDestination.class);
@@ -872,6 +873,27 @@ public class ImplicitFunctionBindingTests {
}
}
@Test
public void testGh2054() {
System.clearProperty("spring.cloud.function.definition");
try (ConfigurableApplicationContext context = new SpringApplicationBuilder(
TestChannelBinderConfiguration.getCompleteConfiguration(ReactiveFunctionConfiguration.class))
.web(WebApplicationType.NONE).run("--spring.jmx.enabled=false",
"--spring.cloud.function.definition=reactivePojoMessage")) {
InputDestination inputDestination = context.getBean(InputDestination.class);
OutputDestination outputDestination = context.getBean(OutputDestination.class);
String jsonPerson = "{\"name\":\"Ricky\",\"id\":1}";
inputDestination.send(MessageBuilder.withPayload(jsonPerson.getBytes()).build());
Message<byte[]> result = outputDestination.receive(2000);
assertThat(new String(result.getPayload())).isEqualTo("{\"name\":\"RICKY\",\"id\":1}");
}
}
@SuppressWarnings("rawtypes")
@Test
public void testWithNativeEncodingImperative() {
@@ -1197,6 +1219,15 @@ public class ImplicitFunctionBindingTests {
return value;
});
}
@Bean
public Function<Flux<Message<Person>>, Flux<Message<Person>>> reactivePojoMessage() {
return flux -> flux.map(message -> {
Person p = message.getPayload();
p.setName(p.getName().toUpperCase());
return MessageBuilder.withPayload(p).copyHeaders(message.getHeaders()).build();
});
}
}
@EnableAutoConfiguration