From d765a03ee6d1454a5f02fc6640ab56b300b9d695 Mon Sep 17 00:00:00 2001 From: Krishnan Mahadevan Date: Fri, 20 Jul 2018 08:33:58 +0530 Subject: [PATCH] Return 404 for non-existent routes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #6126 Return 200 for “/“ Return 404 for everything else when a request for non-existent resource is made to the hub/node. --- .../grid/web/servlet/DisplayHelpServlet.java | 8 ++++++-- .../grid/web/servlet/DisplayHelpServletTest.java | 16 +++++++++------- .../openqa/testing/FakeHttpServletResponse.java | 2 +- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/java/server/src/org/openqa/grid/web/servlet/DisplayHelpServlet.java b/java/server/src/org/openqa/grid/web/servlet/DisplayHelpServlet.java index 82f6a3714813b..122c6f73adf5a 100644 --- a/java/server/src/org/openqa/grid/web/servlet/DisplayHelpServlet.java +++ b/java/server/src/org/openqa/grid/web/servlet/DisplayHelpServlet.java @@ -96,7 +96,7 @@ protected void process(HttpServletRequest request, HttpServletResponse response) if (in == null) { response.sendError(HttpServletResponse.SC_NOT_FOUND); } else { - response.setStatus(200); + response.setStatus(HttpServletResponse.SC_OK); ByteStreams.copy(in, response.getOutputStream()); } } else { @@ -116,10 +116,14 @@ protected void process(HttpServletRequest request, HttpServletResponse response) new BufferedReader(new InputStreamReader(in, "UTF-8")).lines().collect(Collectors.joining("\n")); final String updatedTemplate = htmlTemplate.replace(HELPER_SERVLET_TEMPLATE_CONFIG_JSON_VAR, json); + if (resource.equals("/")) { + response.setStatus(HttpServletResponse.SC_OK); + } else { + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + } response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); - response.setStatus(200); response.getOutputStream().print(updatedTemplate); } } diff --git a/java/server/test/org/openqa/grid/web/servlet/DisplayHelpServletTest.java b/java/server/test/org/openqa/grid/web/servlet/DisplayHelpServletTest.java index b03f512edeb91..378d16a8f9e1e 100644 --- a/java/server/test/org/openqa/grid/web/servlet/DisplayHelpServletTest.java +++ b/java/server/test/org/openqa/grid/web/servlet/DisplayHelpServletTest.java @@ -23,11 +23,8 @@ import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; -import org.hamcrest.CoreMatchers; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; import org.openqa.grid.web.servlet.console.ConsoleServlet; import org.openqa.testing.FakeHttpServletResponse; import org.seleniumhq.jetty9.server.handler.ContextHandler; @@ -77,11 +74,16 @@ public void testGetHelpPageAsset() throws IOException, ServletException { assertTrue(response.getBody().contains("#help-heading #logo")); } - @Test(expected = UnsupportedOperationException.class) + @Test public void testNoSuchAsset() throws IOException, ServletException { - // will result in a call to sendError .. - // FakeHttpServlet will then turn that into an UnsupportedOperationException - sendCommand("GET", "/assets/foo.bar"); + FakeHttpServletResponse response = sendCommand("GET", "/assets/foo.bar"); + assertEquals(HttpServletResponse.SC_NOT_FOUND, response.getStatus()); + } + + @Test + public void testAccessRoot() throws IOException, ServletException { + FakeHttpServletResponse response = sendCommand("GET", "/"); + assertEquals(HttpServletResponse.SC_OK, response.getStatus()); } } diff --git a/java/server/test/org/openqa/testing/FakeHttpServletResponse.java b/java/server/test/org/openqa/testing/FakeHttpServletResponse.java index fc1c90478a3fd..f2eca908389e6 100644 --- a/java/server/test/org/openqa/testing/FakeHttpServletResponse.java +++ b/java/server/test/org/openqa/testing/FakeHttpServletResponse.java @@ -85,7 +85,7 @@ public void sendError(int i, String s) { } public void sendError(int i) { - throw new UnsupportedOperationException(); + setStatus(i); } public void sendRedirect(String s) {