GH-552 Fix Consumer support in FunctionInvoker

Further refactor FunctionInvoker to utilize functionality of AWSLambdaUtils
Add Consumer test

Resolves #552
This commit is contained in:
Oleg Zhurakousky
2021-01-26 10:41:25 +01:00
parent f143dfa304
commit 1a0182a068
5 changed files with 126 additions and 153 deletions

View File

@@ -21,6 +21,7 @@ import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
@@ -656,6 +657,21 @@ public class FunctionInvokerTests {
assertThat(result.get("body")).isEqualTo("\"hello\"");
}
@SuppressWarnings("rawtypes")
@Test
public void testApiGatewayEventConsumer() throws Exception {
System.setProperty("MAIN_CLASS", ApiGatewayConfiguration.class.getName());
System.setProperty("spring.cloud.function.definition", "consume");
FunctionInvoker invoker = new FunctionInvoker();
InputStream targetStream = new ByteArrayInputStream(this.apiGatewayEvent.getBytes());
ByteArrayOutputStream output = new ByteArrayOutputStream();
invoker.handleRequest(targetStream, output, null);
Map result = mapper.readValue(output.toByteArray(), Map.class);
assertThat(result.get("body")).isEqualTo("\"OK\"");
}
@EnableAutoConfiguration
@Configuration
public static class KinesisConfiguration {
@@ -823,6 +839,12 @@ public class FunctionInvokerTests {
@EnableAutoConfiguration
@Configuration
public static class ApiGatewayConfiguration {
@Bean
public Consumer<String> consume() {
return v -> System.out.println(v);
}
@Bean
public Function<String, String> uppercase() {
return v -> v.toUpperCase();