diff --git a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java index 439300135..1ba21904e 100644 --- a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java +++ b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java @@ -716,13 +716,16 @@ private Map getMultipartFormParametersMap() { private String cleanUri(String uri) { - String finalUri = (uri == null ? "" : uri); + String finalUri = (uri == null ? "/" : uri); + if (finalUri.equals("/")) { + return finalUri; + } if (!finalUri.startsWith("/")) { finalUri = "/" + finalUri; } - if (finalUri.endsWith(("/"))) { + if (finalUri.endsWith("/")) { finalUri = finalUri.substring(0, finalUri.length() - 1); } diff --git a/aws-serverless-java-container-spark/src/test/java/com/amazonaws/serverless/proxy/spark/HelloWorldSparkTest.java b/aws-serverless-java-container-spark/src/test/java/com/amazonaws/serverless/proxy/spark/HelloWorldSparkTest.java index 58da129ee..f4870a4ab 100644 --- a/aws-serverless-java-container-spark/src/test/java/com/amazonaws/serverless/proxy/spark/HelloWorldSparkTest.java +++ b/aws-serverless-java-container-spark/src/test/java/com/amazonaws/serverless/proxy/spark/HelloWorldSparkTest.java @@ -89,7 +89,24 @@ public void multiCookie_setCookieOnResponse_singleHeaderWithMultipleValues() { assertTrue(response.getHeaders().get(HttpHeaders.SET_COOKIE).contains(COOKIE_PATH)); } + @Test + public void rootResource_basicRequest_expectSuccess() { + AwsProxyRequest req = new AwsProxyRequestBuilder().method("GET").path("/").build(); + AwsProxyResponse response = handler.proxy(req, new MockLambdaContext()); + + assertEquals(200, response.getStatusCode()); + assertTrue(response.getHeaders().containsKey(CUSTOM_HEADER_KEY)); + assertEquals(CUSTOM_HEADER_VALUE, response.getHeaders().get(CUSTOM_HEADER_KEY)); + assertEquals(BODY_TEXT_RESPONSE, response.getBody()); + } + private static void configureRoutes() { + get("/", (req, res) -> { + res.status(200); + res.header(CUSTOM_HEADER_KEY, CUSTOM_HEADER_VALUE); + return BODY_TEXT_RESPONSE; + }); + get("/hello", (req, res) -> { res.status(200); res.header(CUSTOM_HEADER_KEY, CUSTOM_HEADER_VALUE);