From a9a7f54a96d12c0be6c6b819c5d41f4dcb7a95af Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Thu, 25 Jun 2020 16:43:57 +0100 Subject: [PATCH] Handle trailing slash on status and health_check --- .../server/HealthCheckHandler.java | 6 ++++- .../ic/wlgitbridge/server/StatusHandler.java | 6 ++++- .../WLGitBridgeIntegrationTest.java | 23 +++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/HealthCheckHandler.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/HealthCheckHandler.java index 120b2d6163..d251bd9ae5 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/HealthCheckHandler.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/HealthCheckHandler.java @@ -28,7 +28,11 @@ public class HealthCheckHandler extends AbstractHandler { HttpServletRequest request, HttpServletResponse response ) throws IOException { - if ("GET".equals(baseRequest.getMethod()) && "/health_check".equals(target)) { + if ( + "GET".equals(baseRequest.getMethod()) + && target != null + && target.matches("^\\/health_check\\/?$") + ) { Log.info("GET <- /health_check"); baseRequest.setHandled(true); response.setContentType("text/plain"); diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/StatusHandler.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/StatusHandler.java index 802db35bd1..b205fa46ca 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/StatusHandler.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/StatusHandler.java @@ -28,7 +28,11 @@ public class StatusHandler extends AbstractHandler { HttpServletRequest request, HttpServletResponse response ) throws IOException { - if ("GET".equals(baseRequest.getMethod()) && "/status".equals(target)) { + if ( + "GET".equals(baseRequest.getMethod()) + && target != null + && target.matches("^\\/status\\/?$") + ) { Log.info("GET <- /status"); baseRequest.setHandled(true); response.setContentType("text/plain"); diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java index 482fe8de8d..29356de856 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java @@ -921,6 +921,29 @@ public class WLGitBridgeIntegrationTest { assertEquals(200, healthCheckResponse.getStatusLine().getStatusCode()); } + @Test + public void testStatusAndHealthCheckEndpointsWithTrailingSlash() throws ClientProtocolException, IOException { + int gitBridgePort = 33888; + int mockServerPort = 3888; + server = new MockSnapshotServer(mockServerPort, getResource("/canCloneARepository").toFile()); + server.start(); + server.setState(states.get("canCloneARepository").get("state")); + wlgb = new GitBridgeApp(new String[] { + makeConfigFile(gitBridgePort, mockServerPort) + }); + wlgb.run(); + HttpClient client = HttpClients.createDefault(); + String urlBase = "http://127.0.0.1:" + gitBridgePort; + // Status + HttpGet statusRequest = new HttpGet(urlBase+"/status/"); + HttpResponse statusResponse = client.execute(statusRequest); + assertEquals(200, statusResponse.getStatusLine().getStatusCode()); + // Health Check + HttpGet healthCheckRequest = new HttpGet(urlBase+"/health_check/"); + HttpResponse healthCheckResponse = client.execute(healthCheckRequest); + assertEquals(200, healthCheckResponse.getStatusLine().getStatusCode()); + } + private String makeConfigFile( int port, int apiPort