From 6943be9df51aaba5f0fd07dbb5468ac84f15402a Mon Sep 17 00:00:00 2001 From: Xin Zheng Date: Mon, 3 Feb 2025 15:16:25 +0700 Subject: [PATCH 1/3] trigger search only when "q" param exist --- .../swisspush/gateleen/hook/HookHandler.java | 2 +- .../gateleen/hook/HookHandlerTest.java | 29 ---------------- .../swisspush/gateleen/hook/ListenerTest.java | 34 ++----------------- 3 files changed, 3 insertions(+), 62 deletions(-) diff --git a/gateleen-hook/src/main/java/org/swisspush/gateleen/hook/HookHandler.java b/gateleen-hook/src/main/java/org/swisspush/gateleen/hook/HookHandler.java index 22ed90a90..9770251f5 100755 --- a/gateleen-hook/src/main/java/org/swisspush/gateleen/hook/HookHandler.java +++ b/gateleen-hook/src/main/java/org/swisspush/gateleen/hook/HookHandler.java @@ -587,7 +587,7 @@ public boolean handle(final RoutingContext ctx) { } } - if (requestMethod == GET && !request.params().isEmpty()) { + if (requestMethod == GET && null != request.getParam("q")) { if (requestUri.contains(normalizedListenerBase) ) { handleListenerSearch(request); return true; diff --git a/gateleen-hook/src/test/java/org/swisspush/gateleen/hook/HookHandlerTest.java b/gateleen-hook/src/test/java/org/swisspush/gateleen/hook/HookHandlerTest.java index 2d148c3f0..60b0341a9 100644 --- a/gateleen-hook/src/test/java/org/swisspush/gateleen/hook/HookHandlerTest.java +++ b/gateleen-hook/src/test/java/org/swisspush/gateleen/hook/HookHandlerTest.java @@ -912,35 +912,6 @@ public void testHandleGETRequestWithTrailingSlash(TestContext testContext) { assertEmptyResult(jsonResponse); } - @Test - public void testHandleGETRequestWithInvalidParam(TestContext testContext) { - // Define URI with an invalid parameter different from 'q' - GETRequest request = new GETRequest(HOOK_LISTENER_URI, mockResponse); - request.addParameter("invalidParam", "someValue"); // Invalid parameter, not 'q' - - // Mock the RoutingContext - when(routingContext.request()).thenReturn(request); - - // Capture the response content - ArgumentCaptor responseCaptor = ArgumentCaptor.forClass(String.class); - when(mockResponse.setStatusCode(anyInt())).thenReturn(mockResponse); - when(mockResponse.end(responseCaptor.capture())).thenReturn(Future.succeededFuture()); - - // Execute the Handler - boolean result = hookHandler.handle(routingContext); - - // Verify status 400 due to invalid parameter - verify(mockResponse).setStatusCode(StatusCode.BAD_REQUEST.getStatusCode()); - testContext.assertTrue(result); - - // Verify captured response content - String jsonResponse = responseCaptor.getValue(); - testContext.assertNotNull(jsonResponse); - // Confirm that the response contains "Bad Request" - testContext.assertTrue(jsonResponse.contains("Only the 'q' parameter is allowed and can't be empty or null")); - } - - /////////////////////////////////////////////////////////////////////////////// // Helpers /////////////////////////////////////////////////////////////////////////////// diff --git a/gateleen-test/src/test/java/org/swisspush/gateleen/hook/ListenerTest.java b/gateleen-test/src/test/java/org/swisspush/gateleen/hook/ListenerTest.java index 081483a25..a3f7ea89c 100755 --- a/gateleen-test/src/test/java/org/swisspush/gateleen/hook/ListenerTest.java +++ b/gateleen-test/src/test/java/org/swisspush/gateleen/hook/ListenerTest.java @@ -886,22 +886,6 @@ public void testRequestForwardingForTwoListenerAtSameResourceButDifferentHeaders async.complete(); } - @Test - public void testSearchListenerWithValidAndInvalidSearchParam(TestContext context) { - Async async = context.async(); - registerDefaultListener(); - - searchWithQueryParam("wq", defaultListenerName, 400); - searchWithQueryParam("q", "", 400); - - Response response = searchWithQueryParam("q",defaultListenerName,200); - - Assert.assertTrue(response.getBody().asString().contains(defaultListenerName)); - TestUtils.unregisterListener(defaultRegisterUrlListener); - - async.complete(); - } - @Test public void testSearchListenerWithNonMatchingQueryParam(TestContext context) { Async async = context.async(); @@ -940,20 +924,6 @@ public void testHookHandleSearch_NoListenersRegistered(TestContext context) { async.complete(); } - @Test - public void testHookHandleSearch_ListenerPathInvalidParam(TestContext context) { - Async async = context.async(); - delete(); - initRoutingRules(); - - String queryParam = "testQuery"; - String requestUrl = searchUrlBase+ "?www=" + queryParam; - - // Validate the response - checkGETStatusCodeWithAwait(requestUrl, 400); - async.complete(); - } - @Test public void testHookHandleSearch_ListenerTwoParam(TestContext context) { Async async = context.async(); @@ -1042,7 +1012,7 @@ public void testHookHandleSearch_ReturnsTwoOutOfThreeListeners(TestContext conte // added in searchUrlBase a '/' to validate if also works Response response = given() .queryParam("q", "listener") - .when().get(searchUrlBase+"/") + .when().get(searchUrlBase + "/") .then().assertThat().statusCode(200) .extract().response(); @@ -1170,7 +1140,7 @@ private void checkGETBodyWithAwait(final String requestUrl, final String body) { private Response searchWithQueryParam(String searchParam, String queryParam, int expectedStatusCode ) { return given() .queryParam(searchParam, queryParam) - .when().get(searchUrlBase) + .when().get(searchUrlBase + "/") .then().assertThat().statusCode(expectedStatusCode) .extract().response(); } From 4c6463f30c63b2f8d623319b71c5c7c42401a71e Mon Sep 17 00:00:00 2001 From: Xin Zheng Date: Mon, 3 Feb 2025 16:49:24 +0700 Subject: [PATCH 2/3] try to fix test --- .../java/org/swisspush/gateleen/hook/RouteListingTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gateleen-test/src/test/java/org/swisspush/gateleen/hook/RouteListingTest.java b/gateleen-test/src/test/java/org/swisspush/gateleen/hook/RouteListingTest.java index 48256f05c..3edda60b0 100644 --- a/gateleen-test/src/test/java/org/swisspush/gateleen/hook/RouteListingTest.java +++ b/gateleen-test/src/test/java/org/swisspush/gateleen/hook/RouteListingTest.java @@ -206,7 +206,6 @@ public void testHookHandleSearch_WithValidAndInvalidSearchParam(TestContext cont addRoute(queryParam, true, true); // Verify that the route was correctly registered - searchWithQueryParam("w", queryParam, 400); searchWithQueryParam("q", "", 400); // Verify that the route was correctly registered @@ -232,7 +231,7 @@ public void testHookHandleSearch_RouteNonMatchingQueryParam(TestContext context) // Register a route using the addRoute method addRoute(queryParam, true, true); - assertResponse(get(requestUrlBase), new String[]{queryParam+"/"}); + assertResponse(get(requestUrlBase), new String[]{queryParam + "/"}); Response response = searchWithQueryParam("q", queryParam, 200); Assert.assertTrue("Query param should be found in response", From 044c3c08f3a86b592b045700a62f248f139e5dcf Mon Sep 17 00:00:00 2001 From: Xin Zheng Date: Tue, 4 Feb 2025 09:42:08 +0700 Subject: [PATCH 3/3] adapted a test --- .../swisspush/gateleen/hook/ListenerTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/gateleen-test/src/test/java/org/swisspush/gateleen/hook/ListenerTest.java b/gateleen-test/src/test/java/org/swisspush/gateleen/hook/ListenerTest.java index a3f7ea89c..ef273e626 100755 --- a/gateleen-test/src/test/java/org/swisspush/gateleen/hook/ListenerTest.java +++ b/gateleen-test/src/test/java/org/swisspush/gateleen/hook/ListenerTest.java @@ -886,6 +886,22 @@ public void testRequestForwardingForTwoListenerAtSameResourceButDifferentHeaders async.complete(); } + @Test + public void testSearchListenerWithDifferentParams(TestContext context) { + Async async = context.async(); + registerDefaultListener(); + searchWithQueryParam("storageExpand", "true", 200); + searchWithQueryParam("expand", "1", 200); + searchWithQueryParam("q", "", 400); + + Response response = searchWithQueryParam("q",defaultListenerName,200); + + Assert.assertTrue(response.getBody().asString().contains(defaultListenerName)); + TestUtils.unregisterListener(defaultRegisterUrlListener); + + async.complete(); + } + @Test public void testSearchListenerWithNonMatchingQueryParam(TestContext context) { Async async = context.async();