diff --git a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/RestApplicationTests.java b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/RestApplicationTests.java index b87f90175..ff701b3d2 100644 --- a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/RestApplicationTests.java +++ b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/RestApplicationTests.java @@ -374,6 +374,25 @@ public class RestApplicationTests { assertThat(rest.getForObject("/wrap/123", String.class)).isEqualTo("..123.."); } + @Test + public void convertPost() throws Exception { + ResponseEntity result = rest.exchange(RequestEntity.post(new URI("/wrap")) + .contentType(MediaType.TEXT_PLAIN).body("123"), String.class); + assertThat(result.getBody()).isEqualTo("..123.."); + } + + @Test + public void convertPostJson() throws Exception { + // If you POST a single value to a Function,Flux> it can't + // determine if the output is single valued, so it has to send an array back + ResponseEntity result = rest + .exchange( + RequestEntity.post(new URI("/doubler")) + .contentType(MediaType.TEXT_PLAIN).body("123"), + String.class); + assertThat(result.getBody()).isEqualTo("[246]"); + } + @Test public void supplierFirst() { assertThat(rest.getForObject("/not/a/function", String.class)) @@ -458,6 +477,11 @@ public class RestApplicationTests { return flux -> flux.log().map(value -> ".." + value + ".."); } + @Bean + public Function, Flux> doubler() { + return flux -> flux.log().map(value -> 2 * value); + } + @Bean public Function, Flux>> entity() { return flux -> flux.log()