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

mattisonchao pushed a commit to branch support_mock_final
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit 79a36952c3268a1d4791a6bf7bd1553b90a2ef34
Author: mattisonchao <[email protected]>
AuthorDate: Mon Aug 29 14:04:56 2022 +0800

    [branch-2.9] Support mock final class with `PowerMock`
---
 .../pulsar/broker/service/ServerCnxPowerTest.java  | 43 ++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ServerCnxPowerTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ServerCnxPowerTest.java
new file mode 100644
index 00000000000..b39b9fff0db
--- /dev/null
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ServerCnxPowerTest.java
@@ -0,0 +1,43 @@
+package org.apache.pulsar.broker.service;
+
+import static org.mockito.Mockito.CALLS_REAL_METHODS;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import org.apache.pulsar.common.api.proto.CommandAuthResponse;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.testng.IObjectFactory;
+import org.testng.annotations.ObjectFactory;
+import org.testng.annotations.Test;
+
+
+@PrepareForTest({CommandAuthResponse.class, 
org.apache.pulsar.common.api.proto.AuthData.class})
+@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", 
"javax.management.*", "org.w3c.dom.*"})
+public class ServerCnxPowerTest {
+
+    @ObjectFactory
+    public IObjectFactory getObjectFactory() {
+        return new org.powermock.modules.testng.PowerMockObjectFactory();
+    }
+
+    @Test
+    public void testHandleAuthResponseWithoutClientVersion() {
+        ServerCnx cnx = PowerMockito.mock(ServerCnx.class, CALLS_REAL_METHODS);
+        CommandAuthResponse authResponse = 
PowerMockito.mock(CommandAuthResponse.class);
+        org.apache.pulsar.common.api.proto.AuthData authData =
+                
PowerMockito.mock(org.apache.pulsar.common.api.proto.AuthData.class);
+        when(authResponse.getResponse()).thenReturn(authData);
+        when(authResponse.hasResponse()).thenReturn(true);
+        when(authResponse.getResponse().hasAuthMethodName()).thenReturn(true);
+        when(authResponse.getResponse().hasAuthData()).thenReturn(true);
+        when(authResponse.hasClientVersion()).thenReturn(false);
+        try {
+            cnx.handleAuthResponse(authResponse);
+        } catch (Exception ignore) {
+        }
+        verify(authResponse, times(1)).hasClientVersion();
+        verify(authResponse, times(0)).getClientVersion();
+    }
+}

Reply via email to