Skip to content

Commit e024b5a

Browse files
committed
Added null check for multivalue headers and updated unit tests to address #232
1 parent 4822f3e commit e024b5a

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestReader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public AwsProxyHttpServletRequest readRequest(AwsProxyRequest request, SecurityC
4242
}
4343

4444
request.setPath(stripBasePath(request.getPath(), config));
45-
if (request.getMultiValueHeaders().getFirst(HttpHeaders.CONTENT_TYPE) != null) {
45+
if (request.getMultiValueHeaders() != null && request.getMultiValueHeaders().getFirst(HttpHeaders.CONTENT_TYPE) != null) {
4646
String contentType = request.getMultiValueHeaders().getFirst(HttpHeaders.CONTENT_TYPE);
4747
// put single as we always expect to have one and only one content type in a request.
4848
request.getMultiValueHeaders().putSingle(HttpHeaders.CONTENT_TYPE, getContentTypeWithCharset(contentType, config));

aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestReaderTest.java

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public void readRequest_contentCharset_appendsCharsetToComplextContentType() {
111111
}
112112

113113
@Test
114-
public void readRequest_validEventEmptyPath_expectExcepion() {
114+
public void readRequest_validEventEmptyPath_expectException() {
115115
try {
116116
AwsProxyRequest req = new AwsProxyRequestBuilder(null, "GET").build();
117117
AwsProxyHttpServletRequest servletReq = reader.readRequest(req, null, null, ContainerConfig.defaultConfig());
@@ -123,7 +123,7 @@ public void readRequest_validEventEmptyPath_expectExcepion() {
123123
}
124124

125125
@Test
126-
public void readRequest_invalidEventEmptyMethod_expectExcepion() {
126+
public void readRequest_invalidEventEmptyMethod_expectException() {
127127
try {
128128
AwsProxyRequest req = new AwsProxyRequestBuilder("/path", null).build();
129129
reader.readRequest(req, null, null, ContainerConfig.defaultConfig());
@@ -135,7 +135,7 @@ public void readRequest_invalidEventEmptyMethod_expectExcepion() {
135135
}
136136

137137
@Test
138-
public void readRequest_invalidEventEmptyContext_expectExcepion() {
138+
public void readRequest_invalidEventEmptyContext_expectException() {
139139
try {
140140
AwsProxyRequest req = new AwsProxyRequestBuilder("/path", "GET").build();
141141
req.setRequestContext(null);
@@ -146,4 +146,31 @@ public void readRequest_invalidEventEmptyContext_expectExcepion() {
146146
e.printStackTrace();
147147
}
148148
}
149+
150+
@Test
151+
public void readRequest_nullHeaders_expectSuccess() {
152+
AwsProxyRequest req = new AwsProxyRequestBuilder("/path", "GET").build();
153+
req.setMultiValueHeaders(null);
154+
try {
155+
AwsProxyHttpServletRequest servletReq = reader.readRequest(req, null, null, ContainerConfig.defaultConfig());
156+
String headerValue = servletReq.getHeader(HttpHeaders.CONTENT_TYPE);
157+
assertNull(headerValue);
158+
} catch (InvalidRequestEventException e) {
159+
e.printStackTrace();
160+
fail("Failed to read request with null headers");
161+
}
162+
}
163+
164+
@Test
165+
public void readRequest_emptyHeaders_expectSuccess() {
166+
AwsProxyRequest req = new AwsProxyRequestBuilder("/path", "GET").build();
167+
try {
168+
AwsProxyHttpServletRequest servletReq = reader.readRequest(req, null, null, ContainerConfig.defaultConfig());
169+
String headerValue = servletReq.getHeader(HttpHeaders.CONTENT_TYPE);
170+
assertNull(headerValue);
171+
} catch (InvalidRequestEventException e) {
172+
e.printStackTrace();
173+
fail("Failed to read request with null headers");
174+
}
175+
}
149176
}

0 commit comments

Comments
 (0)