You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by ha...@apache.org on 2026/03/27 11:23:31 UTC

(knox) branch master updated: KNOX-3289: Fix failing GatewayWebsocketHandlerTest tests (#1189)

This is an automated email from the ASF dual-hosted git repository.

hanicz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git


The following commit(s) were added to refs/heads/master by this push:
     new 6042c7150 KNOX-3289: Fix failing GatewayWebsocketHandlerTest tests (#1189)
6042c7150 is described below

commit 6042c715012e8af121469f988d8e5f07d7a2b454
Author: hanicz <ha...@users.noreply.github.com>
AuthorDate: Fri Mar 27 12:23:26 2026 +0100

    KNOX-3289: Fix failing GatewayWebsocketHandlerTest tests (#1189)
---
 .../websockets/GatewayWebsocketHandlerTest.java    | 105 ++++++++++++++++-----
 1 file changed, 84 insertions(+), 21 deletions(-)

diff --git a/gateway-server/src/test/java/org/apache/knox/gateway/websockets/GatewayWebsocketHandlerTest.java b/gateway-server/src/test/java/org/apache/knox/gateway/websockets/GatewayWebsocketHandlerTest.java
index 0edb07e0e..47331b807 100644
--- a/gateway-server/src/test/java/org/apache/knox/gateway/websockets/GatewayWebsocketHandlerTest.java
+++ b/gateway-server/src/test/java/org/apache/knox/gateway/websockets/GatewayWebsocketHandlerTest.java
@@ -31,6 +31,8 @@ import org.apache.knox.gateway.webshell.WebshellWebSocketAdapter;
 import org.easymock.EasyMock;
 import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest;
 import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Rule;
@@ -42,7 +44,10 @@ import org.powermock.core.classloader.annotations.PowerMockIgnore;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
 
-import java.net.URI;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -76,10 +81,8 @@ public class GatewayWebsocketHandlerTest {
         EasyMock.expect(gatewayConfig.getMaximumConcurrentWebshells()).andReturn(3).anyTimes();
         GatewayServices gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
         // mock ServletUpgradeRequest and ServletUpgradeResponse
-        ServletUpgradeRequest req = EasyMock.createNiceMock(ServletUpgradeRequest.class);
-        URI requestURI = new URI("wss://localhost:8443/gateway/webshell");
-        EasyMock.expect(req.getRequestURI()).andReturn(requestURI).anyTimes();
-        ServletUpgradeResponse resp = EasyMock.createNiceMock(ServletUpgradeResponse.class);
+        ServletUpgradeRequest req = createServletUpgradeRequest("wss://localhost:8443/gateway/webshell");
+        ServletUpgradeResponse resp = createServletUpgradeResponse();
 
         JWTValidator jwtValidator = EasyMock.createNiceMock(JWTValidator.class);
         EasyMock.expect(jwtValidator.validate()).andReturn(true).anyTimes();
@@ -88,7 +91,7 @@ public class GatewayWebsocketHandlerTest {
 
         WebshellWebSocketAdapter webshellWebSocketAdapter = PowerMock.createMock(WebshellWebSocketAdapter.class);
         PowerMock.expectNew(WebshellWebSocketAdapter.class,isA(ExecutorService.class) , isA(GatewayConfig.class), isA(JWTValidator.class), isA(AtomicInteger.class)).andReturn(webshellWebSocketAdapter);
-        EasyMock.replay(req,resp,gatewayServices,gatewayConfig,jwtValidator);
+        EasyMock.replay(gatewayServices,gatewayConfig,jwtValidator);
         PowerMock.replayAll();
 
         GatewayWebsocketHandler gatewayWebsocketHandler = new GatewayWebsocketHandler(gatewayConfig,gatewayServices);
@@ -103,10 +106,8 @@ public class GatewayWebsocketHandlerTest {
       EasyMock.expect(gatewayConfig.getMaximumConcurrentWebshells()).andReturn(3).anyTimes();
       GatewayServices gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
       // mock ServletUpgradeRequest and ServletUpgradeResponse
-      ServletUpgradeRequest req = EasyMock.createNiceMock(ServletUpgradeRequest.class);
-      URI requestURI = new URI("wss://www.local.com/gateway/webshell");
-      EasyMock.expect(req.getRequestURI()).andReturn(requestURI).anyTimes();
-      ServletUpgradeResponse resp = EasyMock.createNiceMock(ServletUpgradeResponse.class);
+      ServletUpgradeRequest req = createServletUpgradeRequest("wss://www.local.com/gateway/webshell");
+      ServletUpgradeResponse resp = createServletUpgradeResponse();
 
       JWTValidator jwtValidator = EasyMock.createNiceMock(JWTValidator.class);
       EasyMock.expect(jwtValidator.validate()).andReturn(true).anyTimes();
@@ -115,7 +116,7 @@ public class GatewayWebsocketHandlerTest {
 
       WebshellWebSocketAdapter webshellWebSocketAdapter = PowerMock.createMock(WebshellWebSocketAdapter.class);
       PowerMock.expectNew(WebshellWebSocketAdapter.class,isA(ExecutorService.class) , isA(GatewayConfig.class), isA(JWTValidator.class), isA(AtomicInteger.class)).andReturn(webshellWebSocketAdapter);
-      EasyMock.replay(req,resp,gatewayServices,gatewayConfig,jwtValidator);
+      EasyMock.replay(gatewayServices,gatewayConfig,jwtValidator);
       PowerMock.replayAll();
 
       GatewayWebsocketHandler gatewayWebsocketHandler = new GatewayWebsocketHandler(gatewayConfig,gatewayServices);
@@ -135,17 +136,15 @@ public class GatewayWebsocketHandlerTest {
         EasyMock.expect(gatewayConfig.getMaximumConcurrentWebshells()).andReturn(3).anyTimes();
         GatewayServices gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
         // mock ServletUpgradeRequest and ServletUpgradeResponse
-        ServletUpgradeRequest req = EasyMock.createNiceMock(ServletUpgradeRequest.class);
-        URI requestURI = new URI("wss://localhost:8443/gateway/webshell");
-        EasyMock.expect(req.getRequestURI()).andReturn(requestURI).anyTimes();
-        ServletUpgradeResponse resp = EasyMock.createNiceMock(ServletUpgradeResponse.class);
+        ServletUpgradeRequest req = createServletUpgradeRequest("wss://localhost:8443/gateway/webshell");
+        ServletUpgradeResponse resp = createServletUpgradeResponse();
 
         JWTValidator jwtValidator = EasyMock.createNiceMock(JWTValidator.class);
         EasyMock.expect(jwtValidator.validate()).andReturn(false).anyTimes();
         PowerMock.mockStatic(JWTValidatorFactory.class);
         EasyMock.expect(JWTValidatorFactory.create(req, gatewayServices, gatewayConfig)).andReturn(jwtValidator).anyTimes();
 
-        EasyMock.replay(req,resp,gatewayServices,gatewayConfig,jwtValidator);
+        EasyMock.replay(gatewayServices,gatewayConfig,jwtValidator);
         PowerMock.replayAll();
 
         GatewayWebsocketHandler gatewayWebsocketHandler = new GatewayWebsocketHandler(gatewayConfig,gatewayServices);
@@ -162,14 +161,78 @@ public class GatewayWebsocketHandlerTest {
         EasyMock.expect(gatewayConfig.isWebShellEnabled()).andReturn(false).anyTimes();
         GatewayServices gatewayServices = EasyMock.createNiceMock(GatewayServices.class);
         // mock ServletUpgradeRequest and ServletUpgradeResponse
-        ServletUpgradeRequest req = EasyMock.createNiceMock(ServletUpgradeRequest.class);
-        URI requestURI = new URI("wss://localhost:8443/gateway/webshell");
-        EasyMock.expect(req.getRequestURI()).andReturn(requestURI).anyTimes();
-        ServletUpgradeResponse resp = EasyMock.createNiceMock(ServletUpgradeResponse.class);
-        EasyMock.replay(req,resp,gatewayServices,gatewayConfig);
+        ServletUpgradeRequest req = createServletUpgradeRequest("wss://localhost:8443/gateway/webshell");
+        ServletUpgradeResponse resp = createServletUpgradeResponse();
+        EasyMock.replay(gatewayServices,gatewayConfig);
         GatewayWebsocketHandler gatewayWebsocketHandler = new GatewayWebsocketHandler(gatewayConfig,gatewayServices);
         gatewayWebsocketHandler.createWebSocket(req,resp);
     }
 
+    private ServletUpgradeRequest createServletUpgradeRequest(String url) throws Exception {
+        HttpServletRequest mockRequest = new org.apache.knox.test.mock.MockHttpServletRequest() {
+            @Override
+            public StringBuffer getRequestURL() {
+                return new StringBuffer(url);
+            }
+            @Override
+            public Enumeration<String> getHeaderNames() {
+                return Collections.emptyEnumeration();
+            }
+            @Override
+            public Map<String, String[]> getParameterMap() {
+                return Collections.emptyMap();
+            }
+            @Override
+            public Enumeration<String> getAttributeNames() {
+                return Collections.emptyEnumeration();
+            }
+            @Override
+            public Enumeration<Locale> getLocales() {
+                return Collections.emptyEnumeration();
+            }
+            @Override
+            public String getRemoteAddr() {
+                return "127.0.0.1";
+            }
+            @Override
+            public String getRemoteHost() {
+                return "localhost";
+            }
+            @Override
+            public int getRemotePort() {
+                return 1234;
+            }
+            @Override
+            public String getLocalAddr() {
+                return "127.0.0.1";
+            }
+            @Override
+            public String getLocalName() {
+                return "localhost";
+            }
+            @Override
+            public int getLocalPort() {
+                return 8443;
+            }
+            @Override
+            public String getServerName() {
+                return "localhost";
+            }
+            @Override
+            public int getServerPort() {
+                return 8443;
+            }
+            @Override
+            public String getScheme() {
+                return "wss";
+            }
+        };
+        return new ServletUpgradeRequest(mockRequest);
+    }
 
+    private ServletUpgradeResponse createServletUpgradeResponse() {
+        HttpServletResponse mockResponse = EasyMock.createNiceMock(HttpServletResponse.class);
+        EasyMock.replay(mockResponse);
+        return new ServletUpgradeResponse(mockResponse);
+    }
 }