Skip to content

Commit fdf58ff

Browse files
committed
test: added some tests
1 parent 1e90d34 commit fdf58ff

3 files changed

Lines changed: 536 additions & 16 deletions

File tree

‎aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/EventHandlerLoaderTest.java‎

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest;
44
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.params.ParameterizedTest;
6+
import org.junit.jupiter.params.provider.NullSource;
7+
import org.junit.jupiter.params.provider.ValueSource;
58

69
import java.io.ByteArrayOutputStream;
710
import java.util.ArrayList;
@@ -13,7 +16,6 @@
1316
import java.util.concurrent.TimeUnit;
1417

1518
import static org.junit.jupiter.api.Assertions.assertEquals;
16-
import static org.junit.jupiter.api.Assertions.assertFalse;
1719
import static org.junit.jupiter.api.Assertions.assertTrue;
1820

1921
class EventHandlerLoaderTest {
@@ -60,32 +62,48 @@ void PojoHandlerTest_twoParams() throws Exception {
6062
assertSuccessfulInvocation(lambdaRequestHandler);
6163
}
6264

63-
@Test
64-
void PojoHandler_outputSerializer_ignoresClientContextPlatform() throws Exception {
65+
// Before 2.13.0, a client context with env.platform equal to "Android" (case-insensitive) switched POJO
66+
// serialization to Gson, which binds fields: pojoOutputHandler returned {"internalField":"field-based-value"}
67+
// and pojoInputHandler returned "x:true". Every client context must now produce the Jackson result.
68+
69+
@ParameterizedTest(name = "clientContext={0}")
70+
@NullSource
71+
@ValueSource(strings = {
72+
"{\"env\":{\"platform\":\"Android\"}}",
73+
"{\"env\":{\"platform\":\"android\"}}",
74+
"{\"env\":{\"platform\":\"iPhoneOS\"}}",
75+
"{\"env\":{}}",
76+
"{}"
77+
})
78+
void PojoHandler_outputSerializer_ignoresClientContextPlatform(String clientContext) throws Exception {
6579
LambdaRequestHandler handler =
6680
getLambdaRequestHandler("test.lambda.handlers.POJOHanlderImpl::pojoOutputHandler");
6781

6882
InvocationRequest request = getTestInvocationRequest();
69-
request.setClientContext("{\"env\":{\"platform\":\"Android\"}}");
70-
71-
String result = handler.call(request).toString();
83+
request.setClientContext(clientContext);
7284

73-
assertTrue(result.contains("beanProperty"),
74-
"expected property-based (Jackson) serialization, got: " + result);
75-
assertFalse(result.contains("internalField"),
76-
"caller ClientContext must not switch serialization to field-based (Gson), got: " + result);
85+
assertEquals("{\"beanProperty\":\"property-based-value\"}", handler.call(request).toString());
7786
}
7887

79-
@Test
80-
void PojoHandler_inputSerializer_bindsOnlyBeanProperties() throws Exception {
88+
@ParameterizedTest(name = "clientContext={0}")
89+
@NullSource
90+
@ValueSource(strings = {
91+
"{\"env\":{\"platform\":\"Android\"}}",
92+
"{\"env\":{\"platform\":\"android\"}}",
93+
"{\"env\":{\"platform\":\"iPhoneOS\"}}",
94+
"{\"env\":{}}",
95+
"{}"
96+
})
97+
void PojoHandler_inputSerializer_ignoresClientContextPlatform(String clientContext) throws Exception {
8198
LambdaRequestHandler handler =
8299
getLambdaRequestHandler("test.lambda.handlers.POJOHanlderImpl::pojoInputHandler");
83100

84101
InvocationRequest request = getTestInvocationRequest();
85-
request.setClientContext("{\"env\":{\"platform\":\"Android\"}}");
102+
request.setClientContext(clientContext);
86103
request.setContent("{\"name\":\"x\",\"locked\":true}".getBytes());
87104

88-
assertEquals("false", handler.call(request).toString());
105+
// name has a setter and binds; locked has only a getter and keeps its default
106+
assertEquals("\"x:false\"", handler.call(request).toString());
89107
}
90108

91109
private LambdaRequestHandler getLambdaRequestHandler(String handler) throws ClassNotFoundException {

‎aws-lambda-java-runtime-interface-client/src/test/java/test/lambda/handlers/POJOHanlderImpl.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public String getBeanProperty() {
3939
}
4040

4141
@SuppressWarnings("unused")
42-
public boolean pojoInputHandler(PojoInput input) {
43-
return input.isLocked();
42+
public String pojoInputHandler(PojoInput input) {
43+
return input.getName() + ":" + input.isLocked();
4444
}
4545

4646
@SuppressWarnings("unused")

0 commit comments

Comments
 (0)