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(); + } +}
