GH-833 Add initial support for AWS APIGatewayCustomAuthorizerEvent

Resolves #833
This commit is contained in:
Oleg Zhurakousky
2022-03-23 12:54:15 +01:00
parent a3beef2548
commit 2fc78b2899
3 changed files with 32 additions and 1 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2021-2021 the original author or authors.
* Copyright 2021-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -67,6 +67,7 @@ final class AWSLambdaUtils {
|| typeName.equals("com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent")
|| typeName.equals("com.amazonaws.services.lambda.runtime.events.SNSEvent")
|| typeName.equals("com.amazonaws.services.lambda.runtime.events.SQSEvent")
|| typeName.equals("com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent")
|| typeName.equals("com.amazonaws.services.lambda.runtime.events.KinesisEvent");
}

View File

@@ -27,6 +27,7 @@ import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
import com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent;
@@ -447,6 +448,12 @@ public class FunctionInvokerTests {
" \"isBase64Encoded\": false\n" +
"}";
String gwAuthorizerEvent = "{\n"
+ " \"type\":\"TOKEN\",\n"
+ " \"authorizationToken\":\"allow\",\n"
+ " \"methodArn\":\"arn:aws:execute-api:us-west-2:123456789012:ymy8tbxw7b/*/GET/\"\n"
+ "}";
@BeforeEach
public void before() throws Exception {
System.clearProperty("MAIN_CLASS");
@@ -455,6 +462,19 @@ public class FunctionInvokerTests {
this.getEnvironment().clear();
}
@Test
public void testAPIGatewayCustomAuthorizerEvent() throws Exception {
System.setProperty("MAIN_CLASS", AuthorizerConfiguration.class.getName());
System.setProperty("spring.cloud.function.definition", "acceptAuthorizerEvent");
FunctionInvoker invoker = new FunctionInvoker();
InputStream targetStream = new ByteArrayInputStream(this.gwAuthorizerEvent.getBytes());
ByteArrayOutputStream output = new ByteArrayOutputStream();
invoker.handleRequest(targetStream, output, null);
String result = new String(output.toByteArray(), StandardCharsets.UTF_8);
assertThat(result).contains("APIGatewayCustomAuthorizerEvent(version=null, type=TOKEN");
}
@Test
public void testCollection() throws Exception {
System.setProperty("MAIN_CLASS", SampleConfiguration.class.getName());
@@ -1043,6 +1063,15 @@ public class FunctionInvokerTests {
return (Map<String, String>) field.get(env);
}
@EnableAutoConfiguration
@Configuration
public static class AuthorizerConfiguration {
@Bean
public Function<APIGatewayCustomAuthorizerEvent, String> acceptAuthorizerEvent() {
return v -> v.toString();
}
}
@EnableAutoConfiguration
@Configuration
public static class SampleConfiguration {