imbajin commented on code in PR #3185:
URL: https://github.com/apache/hugegraph/pull/3185#discussion_r3951334521


##########
hugegraph-pd/hg-pd-test/src/main/java/org/apache/hugegraph/pd/rest/RestApiTest.java:
##########
@@ -62,6 +62,56 @@ public void testQueryClusterInfo() throws 
URISyntaxException, IOException, Inter
         assert obj.getInt("status") == 0;
     }
 
+    @Test
+    public void testHealthNeedsNoAuth() throws URISyntaxException, IOException,
+                                             InterruptedException {
+        String url = pdRestAddr + "/v1/health";
+        HttpRequest request = HttpRequest.newBuilder().uri(new 
URI(url)).GET().build();
+        HttpResponse<String> response = client.send(request, 
HttpResponse.BodyHandlers.ofString());
+        assert response.statusCode() == 200;
+        // A 200 alone does not prove the path is anonymous: as of 1.7.0 the 
auth interceptor
+        // refuses with 200 and an error envelope. checkHealthy() returns an 
empty body, which
+        // separates the two whichever status a refusal carries.
+        assert response.body().isEmpty() : "expected an empty body, got " + 
response.body();
+    }
+
+    @Test
+    public void testReadyNeedsNoAuthAndReflectsRaft() throws 
URISyntaxException, IOException,
+                                                            
InterruptedException, JSONException {
+        // The CI PD is a single-node raft group, so it is its own leader and 
must be ready
+        String url = pdRestAddr + "/v1/ready";
+        HttpRequest request = HttpRequest.newBuilder().uri(new 
URI(url)).GET().build();
+        HttpResponse<String> response = client.send(request, 
HttpResponse.BodyHandlers.ofString());
+        assert response.statusCode() == 200 : "expected 200, got " + 
response.statusCode() +
+                                              " body=" + response.body();
+        JSONObject obj = new JSONObject(response.body());
+        assert obj.getBoolean("ready");
+        assert obj.getBoolean("isLeader");
+        assert "STATE_LEADER".equals(obj.getString("state"));
+        // Unauthenticated, so it must not disclose cluster addresses
+        assert !obj.has("leader") : "the anonymous body must not carry the 
leader address";
+    }

Review Comment:
   🧹 Could we also add a test case to verify the `503 Service Unavailable` 
response when the node is not ready (e.g., when quorum is lost or before raft 
initialization)? Currently `RestApiTest` only verifies the 200 OK leader path.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to