Skip to content

Commit f18176f

Browse files
committed
Addressed bug with Spark requests to the root resource not being routed correctly (#151)
1 parent 38d0154 commit f18176f

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -716,13 +716,16 @@ private Map<String, Part> getMultipartFormParametersMap() {
716716

717717

718718
private String cleanUri(String uri) {
719-
String finalUri = (uri == null ? "" : uri);
719+
String finalUri = (uri == null ? "/" : uri);
720+
if (finalUri.equals("/")) {
721+
return finalUri;
722+
}
720723

721724
if (!finalUri.startsWith("/")) {
722725
finalUri = "/" + finalUri;
723726
}
724727

725-
if (finalUri.endsWith(("/"))) {
728+
if (finalUri.endsWith("/")) {
726729
finalUri = finalUri.substring(0, finalUri.length() - 1);
727730
}
728731

aws-serverless-java-container-spark/src/test/java/com/amazonaws/serverless/proxy/spark/HelloWorldSparkTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,24 @@ public void multiCookie_setCookieOnResponse_singleHeaderWithMultipleValues() {
8989
assertTrue(response.getHeaders().get(HttpHeaders.SET_COOKIE).contains(COOKIE_PATH));
9090
}
9191

92+
@Test
93+
public void rootResource_basicRequest_expectSuccess() {
94+
AwsProxyRequest req = new AwsProxyRequestBuilder().method("GET").path("/").build();
95+
AwsProxyResponse response = handler.proxy(req, new MockLambdaContext());
96+
97+
assertEquals(200, response.getStatusCode());
98+
assertTrue(response.getHeaders().containsKey(CUSTOM_HEADER_KEY));
99+
assertEquals(CUSTOM_HEADER_VALUE, response.getHeaders().get(CUSTOM_HEADER_KEY));
100+
assertEquals(BODY_TEXT_RESPONSE, response.getBody());
101+
}
102+
92103
private static void configureRoutes() {
104+
get("/", (req, res) -> {
105+
res.status(200);
106+
res.header(CUSTOM_HEADER_KEY, CUSTOM_HEADER_VALUE);
107+
return BODY_TEXT_RESPONSE;
108+
});
109+
93110
get("/hello", (req, res) -> {
94111
res.status(200);
95112
res.header(CUSTOM_HEADER_KEY, CUSTOM_HEADER_VALUE);

0 commit comments

Comments
 (0)