From 79f4540130e7261bfe57832499570098ec6d7416 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Thu, 20 May 2021 07:31:48 +0200 Subject: [PATCH] GH-676 Add split condition test for header enrichment --- .../context/FunctionPropertiesTests.java | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/FunctionPropertiesTests.java b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/FunctionPropertiesTests.java index 2f00f09ec..9a5fea593 100644 --- a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/FunctionPropertiesTests.java +++ b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/FunctionPropertiesTests.java @@ -106,22 +106,22 @@ public class FunctionPropertiesTests { } } -// @Test -// public void testInputHeaderMappingPropertyWithCompositionWithoutIndex() throws Exception { -// try (ConfigurableApplicationContext context = new SpringApplicationBuilder( -// SampleFunctionConfiguration.class).web(WebApplicationType.NONE).run( -// "--logging.level.org.springframework.cloud.function=DEBUG", -// "--spring.main.lazy-initialization=true", -// "--spring.cloud.function.definition=echo|foo", -// "--spring.cloud.function.configuration.echofoo.input-header-mapping-expression.key1=hello1", -// "--spring.cloud.function.configuration.echofoo.input-header-mapping-expression.key2=hello2")) { -// FunctionProperties functionProperties = context -// .getBean(FunctionProperties.class); -// FunctionConfigurationProperties configuration = functionProperties -// .getConfiguration().get("echofoo"); -// assertThat(configuration.getInputHeaderMappingExpression()).containsKey("0"); -// } -// } + @Test + public void testInputHeaderMappingPropertyWithSplitExpression() throws Exception { + try (ConfigurableApplicationContext context = new SpringApplicationBuilder( + SampleFunctionConfiguration.class).web(WebApplicationType.NONE).run( + "--logging.level.org.springframework.cloud.function=DEBUG", + "--spring.main.lazy-initialization=true", + "--spring.cloud.function.configuration.split.input-header-mapping-expression.key1=headers.path.split('/')[0]", + "--spring.cloud.function.configuration.split.input-header-mapping-expression.key2=headers.path.split('/')[1]", + "--spring.cloud.function.configuration.split.input-header-mapping-expression.key3=headers.path")) { + FunctionCatalog functionCatalog = context.getBean(FunctionCatalog.class); + FunctionInvocationWrapper function = functionCatalog.lookup("split"); + function.apply(MessageBuilder.withPayload("helo") + .setHeader(MessageHeaders.CONTENT_TYPE, "application/json") + .setHeader("path", "foo/bar/baz").build()); + } + } @EnableAutoConfiguration @Configuration @@ -137,6 +137,16 @@ public class FunctionPropertiesTests { }; } + @Bean + public Function, Message> split() { + return m -> { + assertThat(m.getHeaders().get("key1")).isEqualTo("foo"); + assertThat(m.getHeaders().get("key2")).isEqualTo("bar"); + assertThat(m.getHeaders().get("key3")).isEqualTo("foo/bar/baz"); + return m; + }; + } + @Bean public Function, Message> foo() { return x -> x;