From f992c448de3baaa0f2c4459265e242cb8de24863 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Mon, 24 Jan 2022 16:19:26 +0100 Subject: [PATCH] Cleanup and additional test --- .../HybridFunctionalRegistrationTests.java | 39 ++++++++++++++++++- .../web/mvc/HttpPostIntegrationTests.java | 19 --------- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/HybridFunctionalRegistrationTests.java b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/HybridFunctionalRegistrationTests.java index f49d301be..fd8b3d843 100644 --- a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/HybridFunctionalRegistrationTests.java +++ b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/HybridFunctionalRegistrationTests.java @@ -26,6 +26,8 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; import org.springframework.cloud.function.context.config.ContextFunctionCatalogAutoConfiguration; import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.messaging.Message; +import org.springframework.messaging.support.MessageBuilder; import static org.assertj.core.api.Assertions.assertThat; @@ -37,6 +39,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class HybridFunctionalRegistrationTests { // see https://github.com/spring-cloud/spring-cloud-function/issues/258 + @SuppressWarnings("rawtypes") @Test public void testNoDoubleRegistrationInHybridMode() { ConfigurableApplicationContext context = FunctionalSpringApplication @@ -46,9 +49,26 @@ public class HybridFunctionalRegistrationTests { assertThat(context.containsBean("function")).isTrue(); assertThat(context.getBeansOfType(UppercaseFunction.class).size()).isEqualTo(1); - assertThat((Object) catalog.lookup(Function.class, "hybridFunctionalRegistrationTests.UppercaseFunction")).isNotNull(); + assertThat((Function) catalog.lookup("hybridFunctionalRegistrationTests.UppercaseFunction")).isNotNull(); } + @SuppressWarnings("rawtypes") + @Test + public void testMessageHeaderPropagationInFunctionalBeanRegistration() { + ConfigurableApplicationContext context = FunctionalSpringApplication + .run(UppercaseMessageFunction.class, "--spring.functional.enabled=false"); + + FunctionCatalog catalog = context.getBean(FunctionCatalog.class); + + assertThat(context.containsBean("function")).isTrue(); + assertThat(context.getBeansOfType(UppercaseMessageFunction.class).size()).isEqualTo(1); + Function f = catalog.lookup(Function.class, "hybridFunctionalRegistrationTests.UppercaseMessageFunction"); + assertThat(f).isNotNull(); + String result = (String) f.apply(MessageBuilder.withPayload("hello").setHeader("foo", "foo").setHeader("blah", "blah").build()); + assertThat(result).isEqualTo("HELLO"); + } + + @SuppressWarnings("rawtypes") @Test public void testNoDoubleRegistrationInHybridModeFluxedFunction() { ConfigurableApplicationContext context = FunctionalSpringApplication @@ -58,7 +78,7 @@ public class HybridFunctionalRegistrationTests { assertThat(context.containsBean("function")).isTrue(); assertThat(context.getBeansOfType(UppercaseFluxFunction.class).size()).isEqualTo(1); - assertThat((Object) catalog.lookup(Function.class, "hybridFunctionalRegistrationTests.UppercaseFluxFunction")).isNotNull(); + assertThat((Function) catalog.lookup(Function.class, "hybridFunctionalRegistrationTests.UppercaseFluxFunction")).isNotNull(); } @SpringBootConfiguration @@ -74,6 +94,21 @@ public class HybridFunctionalRegistrationTests { } } + @SpringBootConfiguration + @ImportAutoConfiguration({ + ContextFunctionCatalogAutoConfiguration.class, + JacksonAutoConfiguration.class } + ) + public static class UppercaseMessageFunction implements Function, String> { + + @Override + public String apply(Message message) { + assertThat(message.getHeaders().get("foo")).isEqualTo("foo"); + assertThat(message.getHeaders().get("blah")).isEqualTo("blah"); + return message.getPayload().toUpperCase(); + } + } + @SpringBootConfiguration @ImportAutoConfiguration({ ContextFunctionCatalogAutoConfiguration.class, diff --git a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/mvc/HttpPostIntegrationTests.java b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/mvc/HttpPostIntegrationTests.java index 811d898da..9115a5fb9 100644 --- a/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/mvc/HttpPostIntegrationTests.java +++ b/spring-cloud-function-web/src/test/java/org/springframework/cloud/function/web/mvc/HttpPostIntegrationTests.java @@ -290,29 +290,11 @@ public class HttpPostIntegrationTests { @Test public void uppercaseSSE() throws Exception { - String s = this.rest.exchange(RequestEntity.post(new URI("/uppercase")).contentType(MediaType.APPLICATION_JSON) - .body("[\"foo\",\"bar\"]"), String.class).getBody(); assertThat(this.rest.exchange(RequestEntity.post(new URI("/uppercase")).contentType(MediaType.APPLICATION_JSON) .body("[\"foo\",\"bar\"]"), String.class).getBody()) .isEqualTo(sse("(FOO)", "(BAR)")); } -// @Test -// public void uppercaseSSE() throws Exception { -// assertThat(this.rest.exchange(RequestEntity.post(new URI("/uppercase")) -// .accept(EVENT_STREAM).contentType(MediaType.APPLICATION_JSON) -// .body("[\"foo\",\"bar\"]"), String.class).getBody()) -// .isEqualTo(sse("(FOO)", "(BAR)")); -// -//// String body = this.rest.exchange(RequestEntity.post(new URI("/uppercase")).contentType(MediaType.APPLICATION_JSON) -//// .body("[\"foo\",\"bar\"]"), String.class).getBody(); -// -//// System.out.println(body); -// -//// assertThat(body) -//// .isEqualTo(sse("(FOO)", "(BAR)")); -// } - @Test public void sum() throws Exception { @@ -351,7 +333,6 @@ public class HttpPostIntegrationTests { } private String sse(String... values) { - //return "data:" + StringUtils.arrayToDelimitedString(values, "\n\ndata:") + "\n\n"; return "[\"" + StringUtils.arrayToDelimitedString(values, "\",\"") + "\"]"; }