ソースを参照

Handle trailing slash on status and health_check

Shane Kilkelly 6 年 前
親
コミット
a9a7f54a96

+ 5 - 1
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");

+ 5 - 1
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");

+ 23 - 0
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