You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by ij...@apache.org on 2021/09/23 12:10:14 UTC
[kafka] branch trunk updated: MINOR: Replace EasyMock with Mockito
in connect:basic-auth-extension (#11321)
This is an automated email from the ASF dual-hosted git repository.
ijuma pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/trunk by this push:
new 509c165 MINOR: Replace EasyMock with Mockito in connect:basic-auth-extension (#11321)
509c165 is described below
commit 509c1653fd0d107196fbf599a01d7899f6222160
Author: dengziming <sw...@163.com>
AuthorDate: Thu Sep 23 20:08:06 2021 +0800
MINOR: Replace EasyMock with Mockito in connect:basic-auth-extension (#11321)
Reviewers: Ismael Juma <is...@juma.me.uk>
---
build.gradle | 2 +-
.../BasicAuthSecurityRestExtensionTest.java | 29 +++---
.../auth/extension/JaasBasicAuthFilterTest.java | 114 ++++++++++++---------
3 files changed, 82 insertions(+), 63 deletions(-)
diff --git a/build.gradle b/build.gradle
index c71de99..7610d4e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2517,7 +2517,7 @@ project(':connect:basic-auth-extension') {
implementation libs.jaxrsApi
testImplementation libs.bcpkix
- testImplementation libs.easymock
+ testImplementation libs.mockitoCore
testImplementation libs.junitJupiter
testImplementation project(':clients').sourceSets.test.output
diff --git a/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/BasicAuthSecurityRestExtensionTest.java b/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/BasicAuthSecurityRestExtensionTest.java
index a0ec4bb..b1b5b1e 100644
--- a/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/BasicAuthSecurityRestExtensionTest.java
+++ b/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/BasicAuthSecurityRestExtensionTest.java
@@ -19,11 +19,10 @@ package org.apache.kafka.connect.rest.basic.auth.extension;
import org.apache.kafka.connect.errors.ConnectException;
import org.apache.kafka.connect.rest.ConnectRestExtensionContext;
-import org.easymock.Capture;
-import org.easymock.EasyMock;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
import javax.security.auth.login.Configuration;
import javax.ws.rs.core.Configurable;
@@ -37,6 +36,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
public class BasicAuthSecurityRestExtensionTest {
@@ -55,20 +56,18 @@ public class BasicAuthSecurityRestExtensionTest {
@SuppressWarnings("unchecked")
@Test
public void testJaasConfigurationNotOverwritten() {
- Capture<JaasBasicAuthFilter> jaasFilter = EasyMock.newCapture();
- Configurable<? extends Configurable<?>> configurable = EasyMock.mock(Configurable.class);
- EasyMock.expect(configurable.register(EasyMock.capture(jaasFilter))).andReturn(null);
-
- ConnectRestExtensionContext context = EasyMock.mock(ConnectRestExtensionContext.class);
- EasyMock.expect(context.configurable()).andReturn((Configurable) configurable);
-
- EasyMock.replay(configurable, context);
-
+ ArgumentCaptor<JaasBasicAuthFilter> jaasFilter = ArgumentCaptor.forClass(JaasBasicAuthFilter.class);
+ Configurable<? extends Configurable<?>> configurable = mock(Configurable.class);
+ when(configurable.register(jaasFilter.capture())).thenReturn(null);
+
+ ConnectRestExtensionContext context = mock(ConnectRestExtensionContext.class);
+ when(context.configurable()).thenReturn((Configurable) configurable);
+
BasicAuthSecurityRestExtension extension = new BasicAuthSecurityRestExtension();
- Configuration overwrittenConfiguration = EasyMock.mock(Configuration.class);
+ Configuration overwrittenConfiguration = mock(Configuration.class);
Configuration.setConfiguration(overwrittenConfiguration);
extension.register(context);
-
+
assertNotEquals(overwrittenConfiguration, jaasFilter.getValue().configuration,
"Overwritten JAAS configuration should not be used by basic auth REST extension");
}
@@ -87,7 +86,7 @@ public class BasicAuthSecurityRestExtensionTest {
@Test
public void testGoodJaasConfigInitialization() {
AtomicBoolean configurationInitializerEvaluated = new AtomicBoolean(false);
- Configuration mockConfiguration = EasyMock.mock(Configuration.class);
+ Configuration mockConfiguration = mock(Configuration.class);
Supplier<Configuration> configuration = BasicAuthSecurityRestExtension.initializeConfiguration(() -> {
configurationInitializerEvaluated.set(true);
return mockConfiguration;
@@ -109,7 +108,7 @@ public class BasicAuthSecurityRestExtensionTest {
Exception thrownException = assertThrows(Exception.class, () -> extension.configure(Collections.emptyMap()));
assertEquals(jaasConfigurationException, thrownException);
- thrownException = assertThrows(Exception.class, () -> extension.register(EasyMock.mock(ConnectRestExtensionContext.class)));
+ thrownException = assertThrows(Exception.class, () -> extension.register(mock(ConnectRestExtensionContext.class)));
assertEquals(jaasConfigurationException, thrownException);
}
}
diff --git a/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilterTest.java b/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilterTest.java
index c6c674a..561095f 100644
--- a/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilterTest.java
+++ b/connect/basic-auth-extension/src/test/java/org/apache/kafka/connect/rest/basic/auth/extension/JaasBasicAuthFilterTest.java
@@ -25,7 +25,6 @@ import javax.ws.rs.core.UriInfo;
import org.apache.kafka.common.security.authenticator.TestJaasConfig;
import org.apache.kafka.connect.errors.ConnectException;
-import org.easymock.EasyMock;
import org.junit.jupiter.api.Test;
import java.io.File;
@@ -41,8 +40,11 @@ import java.util.Map;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.core.Response;
-import static org.easymock.EasyMock.replay;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
public class JaasBasicAuthFilterTest {
@@ -53,110 +55,133 @@ public class JaasBasicAuthFilterTest {
public void testSuccess() throws IOException {
File credentialFile = setupPropertyLoginFile(true);
JaasBasicAuthFilter jaasBasicAuthFilter = setupJaasFilter("KafkaConnect", credentialFile.getPath());
- ContainerRequestContext requestContext = setMock("Basic", "user", "password", false);
+ ContainerRequestContext requestContext = setMock("Basic", "user", "password");
jaasBasicAuthFilter.filter(requestContext);
+
+ verify(requestContext).getMethod();
+ verify(requestContext).getHeaderString(JaasBasicAuthFilter.AUTHORIZATION);
}
@Test
public void testEmptyCredentialsFile() throws IOException {
File credentialFile = setupPropertyLoginFile(false);
JaasBasicAuthFilter jaasBasicAuthFilter = setupJaasFilter("KafkaConnect", credentialFile.getPath());
- ContainerRequestContext requestContext = setMock("Basic", "user", "password", false);
+ ContainerRequestContext requestContext = setMock("Basic", "user", "password");
jaasBasicAuthFilter.filter(requestContext);
- EasyMock.verify(requestContext);
+
+ verify(requestContext).getMethod();
+ verify(requestContext).getHeaderString(JaasBasicAuthFilter.AUTHORIZATION);
}
@Test
public void testBadCredential() throws IOException {
File credentialFile = setupPropertyLoginFile(true);
JaasBasicAuthFilter jaasBasicAuthFilter = setupJaasFilter("KafkaConnect", credentialFile.getPath());
- ContainerRequestContext requestContext = setMock("Basic", "user1", "password", true);
+ ContainerRequestContext requestContext = setMock("Basic", "user1", "password");
jaasBasicAuthFilter.filter(requestContext);
- EasyMock.verify(requestContext);
+
+ verify(requestContext).abortWith(any(Response.class));
+ verify(requestContext).getMethod();
+ verify(requestContext).getHeaderString(JaasBasicAuthFilter.AUTHORIZATION);
}
@Test
public void testBadPassword() throws IOException {
File credentialFile = setupPropertyLoginFile(true);
JaasBasicAuthFilter jaasBasicAuthFilter = setupJaasFilter("KafkaConnect", credentialFile.getPath());
- ContainerRequestContext requestContext = setMock("Basic", "user", "password1", true);
+ ContainerRequestContext requestContext = setMock("Basic", "user", "password1");
jaasBasicAuthFilter.filter(requestContext);
- EasyMock.verify(requestContext);
+
+ verify(requestContext).abortWith(any(Response.class));
+ verify(requestContext).getMethod();
+ verify(requestContext).getHeaderString(JaasBasicAuthFilter.AUTHORIZATION);
}
@Test
public void testUnknownBearer() throws IOException {
File credentialFile = setupPropertyLoginFile(true);
JaasBasicAuthFilter jaasBasicAuthFilter = setupJaasFilter("KafkaConnect", credentialFile.getPath());
- ContainerRequestContext requestContext = setMock("Unknown", "user", "password", true);
+ ContainerRequestContext requestContext = setMock("Unknown", "user", "password");
jaasBasicAuthFilter.filter(requestContext);
- EasyMock.verify(requestContext);
+
+ verify(requestContext).abortWith(any(Response.class));
+ verify(requestContext).getMethod();
+ verify(requestContext).getHeaderString(JaasBasicAuthFilter.AUTHORIZATION);
}
@Test
public void testUnknownLoginModule() throws IOException {
File credentialFile = setupPropertyLoginFile(true);
JaasBasicAuthFilter jaasBasicAuthFilter = setupJaasFilter("KafkaConnect1", credentialFile.getPath());
- ContainerRequestContext requestContext = setMock("Basic", "user", "password", true);
+ ContainerRequestContext requestContext = setMock("Basic", "user", "password");
jaasBasicAuthFilter.filter(requestContext);
- EasyMock.verify(requestContext);
+
+ verify(requestContext).abortWith(any(Response.class));
+ verify(requestContext).getMethod();
+ verify(requestContext).getHeaderString(JaasBasicAuthFilter.AUTHORIZATION);
}
@Test
public void testUnknownCredentialsFile() throws IOException {
JaasBasicAuthFilter jaasBasicAuthFilter = setupJaasFilter("KafkaConnect", "/tmp/testcrednetial");
- ContainerRequestContext requestContext = setMock("Basic", "user", "password", true);
+ ContainerRequestContext requestContext = setMock("Basic", "user", "password");
jaasBasicAuthFilter.filter(requestContext);
- EasyMock.verify(requestContext);
+
+ verify(requestContext).abortWith(any(Response.class));
+ verify(requestContext).getMethod();
+ verify(requestContext).getHeaderString(JaasBasicAuthFilter.AUTHORIZATION);
}
@Test
public void testNoFileOption() throws IOException {
JaasBasicAuthFilter jaasBasicAuthFilter = setupJaasFilter("KafkaConnect", null);
- ContainerRequestContext requestContext = setMock("Basic", "user", "password", true);
+ ContainerRequestContext requestContext = setMock("Basic", "user", "password");
jaasBasicAuthFilter.filter(requestContext);
- EasyMock.verify(requestContext);
+
+ verify(requestContext).abortWith(any(Response.class));
+ verify(requestContext).getMethod();
+ verify(requestContext).getHeaderString(JaasBasicAuthFilter.AUTHORIZATION);
}
@Test
public void testPostWithoutAppropriateCredential() throws IOException {
- UriInfo uriInfo = EasyMock.strictMock(UriInfo.class);
- EasyMock.expect(uriInfo.getPath()).andReturn("connectors/connName/tasks");
-
- ContainerRequestContext requestContext = EasyMock.strictMock(ContainerRequestContext.class);
- EasyMock.expect(requestContext.getMethod()).andReturn(HttpMethod.POST);
- EasyMock.expect(requestContext.getUriInfo()).andReturn(uriInfo);
+ UriInfo uriInfo = mock(UriInfo.class);
+ when(uriInfo.getPath()).thenReturn("connectors/connName/tasks");
- replay(uriInfo, requestContext);
+ ContainerRequestContext requestContext = mock(ContainerRequestContext.class);
+ when(requestContext.getMethod()).thenReturn(HttpMethod.POST);
+ when(requestContext.getUriInfo()).thenReturn(uriInfo);
File credentialFile = setupPropertyLoginFile(true);
JaasBasicAuthFilter jaasBasicAuthFilter = setupJaasFilter("KafkaConnect1", credentialFile.getPath());
jaasBasicAuthFilter.filter(requestContext);
- EasyMock.verify(requestContext);
+
+ verify(uriInfo).getPath();
+ verify(requestContext).getMethod();
+ verify(requestContext).getUriInfo();
}
@Test
public void testPostNotChangingConnectorTask() throws IOException {
- UriInfo uriInfo = EasyMock.strictMock(UriInfo.class);
- EasyMock.expect(uriInfo.getPath()).andReturn("local:randomport/connectors/connName");
+ UriInfo uriInfo = mock(UriInfo.class);
+ when(uriInfo.getPath()).thenReturn("local:randomport/connectors/connName");
- ContainerRequestContext requestContext = EasyMock.strictMock(ContainerRequestContext.class);
- EasyMock.expect(requestContext.getMethod()).andReturn(HttpMethod.POST);
- EasyMock.expect(requestContext.getUriInfo()).andReturn(uriInfo);
+ ContainerRequestContext requestContext = mock(ContainerRequestContext.class);
+ when(requestContext.getMethod()).thenReturn(HttpMethod.POST);
+ when(requestContext.getUriInfo()).thenReturn(uriInfo);
String authHeader = "Basic" + Base64.getEncoder().encodeToString(("user" + ":" + "password").getBytes());
- EasyMock.expect(requestContext.getHeaderString(JaasBasicAuthFilter.AUTHORIZATION))
- .andReturn(authHeader);
- requestContext.abortWith(EasyMock.anyObject(Response.class));
- EasyMock.expectLastCall();
-
- replay(uriInfo, requestContext);
+ when(requestContext.getHeaderString(JaasBasicAuthFilter.AUTHORIZATION))
+ .thenReturn(authHeader);
File credentialFile = setupPropertyLoginFile(true);
JaasBasicAuthFilter jaasBasicAuthFilter = setupJaasFilter("KafkaConnect", credentialFile.getPath());
jaasBasicAuthFilter.filter(requestContext);
- EasyMock.verify(requestContext);
+
+ verify(requestContext).abortWith(any(Response.class));
+ verify(requestContext).getUriInfo();
+ verify(requestContext).getUriInfo();
}
@Test
@@ -177,16 +202,11 @@ public class JaasBasicAuthFilterTest {
return authorization + " " + Base64.getEncoder().encodeToString((username + ":" + password).getBytes());
}
- private ContainerRequestContext setMock(String authorization, String username, String password, boolean exceptionCase) {
- ContainerRequestContext requestContext = EasyMock.strictMock(ContainerRequestContext.class);
- EasyMock.expect(requestContext.getMethod()).andReturn(HttpMethod.GET);
- EasyMock.expect(requestContext.getHeaderString(JaasBasicAuthFilter.AUTHORIZATION))
- .andReturn(authHeader(authorization, username, password));
- if (exceptionCase) {
- requestContext.abortWith(EasyMock.anyObject(Response.class));
- EasyMock.expectLastCall();
- }
- replay(requestContext);
+ private ContainerRequestContext setMock(String authorization, String username, String password) {
+ ContainerRequestContext requestContext = mock(ContainerRequestContext.class);
+ when(requestContext.getMethod()).thenReturn(HttpMethod.GET);
+ when(requestContext.getHeaderString(JaasBasicAuthFilter.AUTHORIZATION))
+ .thenReturn(authHeader(authorization, username, password));
return requestContext;
}