This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.1 by this push:
new 75884ac80ab branch-3.1: [ut](ldap)Change the implementation of
LdapClientTest to solve the problem of pipeline out failure #57994 (#58006)
75884ac80ab is described below
commit 75884ac80abdff5378cadd6728ccfa537632b26f
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Nov 19 14:21:09 2025 +0800
branch-3.1: [ut](ldap)Change the implementation of LdapClientTest to solve
the problem of pipeline out failure #57994 (#58006)
Cherry-picked from #57994
Co-authored-by: zhangdong <[email protected]>
---
.../doris/mysql/authenticate/ldap/LdapClient.java | 4 +-
.../mysql/authenticate/ldap/LdapClientTest.java | 114 ++++++---------------
2 files changed, 35 insertions(+), 83 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/mysql/authenticate/ldap/LdapClient.java
b/fe/fe-core/src/main/java/org/apache/doris/mysql/authenticate/ldap/LdapClient.java
index 1186469a1ec..0d9bbe0c343 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/mysql/authenticate/ldap/LdapClient.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/mysql/authenticate/ldap/LdapClient.java
@@ -25,6 +25,7 @@ import org.apache.doris.common.util.NetUtils;
import org.apache.doris.common.util.SymmetricEncryption;
import org.apache.doris.persist.LdapInfo;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Lists;
import lombok.Data;
import org.apache.logging.log4j.LogManager;
@@ -206,7 +207,8 @@ public class LdapClient {
return userDns.get(0);
}
- private List<String> getDn(LdapQuery query) {
+ @VisibleForTesting
+ public List<String> getDn(LdapQuery query) {
init();
try {
return clientInfo.getLdapTemplatePool().search(query,
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/mysql/authenticate/ldap/LdapClientTest.java
b/fe/fe-core/src/test/java/org/apache/doris/mysql/authenticate/ldap/LdapClientTest.java
index 531604d533f..866a84e7528 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/mysql/authenticate/ldap/LdapClientTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/mysql/authenticate/ldap/LdapClientTest.java
@@ -17,59 +17,25 @@
package org.apache.doris.mysql.authenticate.ldap;
-import org.apache.doris.catalog.Env;
import org.apache.doris.common.Config;
import org.apache.doris.common.LdapConfig;
-import org.apache.doris.mysql.privilege.Auth;
-import org.apache.doris.persist.LdapInfo;
-import com.google.common.collect.Lists;
-import mockit.Delegate;
import mockit.Expectations;
-import mockit.Mocked;
+import mockit.Tested;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.springframework.ldap.core.LdapTemplate;
-import org.springframework.ldap.core.support.AbstractContextMapper;
import org.springframework.ldap.query.LdapQuery;
+import java.util.Arrays;
import java.util.List;
public class LdapClientTest {
- private static final String ADMIN_PASSWORD = "admin";
-
- @Mocked
- private LdapTemplate ldapTemplate;
-
- @Mocked
- private Env env;
-
- @Mocked
- private Auth auth;
-
- private LdapInfo ldapInfo = new LdapInfo(ADMIN_PASSWORD);
-
- private LdapClient ldapClient = new LdapClient();
+ @Tested
+ private LdapClient ldapClient;
@Before
public void setUp() {
- new Expectations() {
- {
- Env.getCurrentEnv();
- minTimes = 0;
- result = env;
-
- env.getAuth();
- minTimes = 0;
- result = auth;
-
- auth.getLdapInfo();
- minTimes = 0;
- result = ldapInfo;
- }
- };
-
Config.authentication_type = "ldap";
LdapConfig.ldap_host = "127.0.0.1";
LdapConfig.ldap_port = 389;
@@ -79,70 +45,54 @@ public class LdapClientTest {
LdapConfig.ldap_user_filter = "(&(uid={login}))";
}
- private void mockLdapTemplateSearch(List list) {
- new Expectations() {
+ @Test
+ public void testDoesUserExist() {
+ List<String> list = Arrays.asList("zhangsan");
+
+ new Expectations(ldapClient) {
{
- ldapTemplate.search((LdapQuery) any, (AbstractContextMapper)
any);
- minTimes = 0;
+ ldapClient.getDn((LdapQuery) any);
result = list;
}
};
- }
- private void mockLdapTemplateAuthenticate(String password) {
- new Expectations() {
- {
- ldapTemplate.authenticate((LdapQuery) any, anyString);
- minTimes = 0;
- result = new Delegate() {
- void fakeAuthenticate(LdapQuery query, String passwd) {
- if (passwd.equals(password)) {
- return;
- } else {
- throw new
org.springframework.ldap.AuthenticationException();
- }
- }
- };
- }
- };
- }
-
- @Test
- public void testDoesUserExist() {
- List<String> list = Lists.newArrayList();
- list.add("zhangsan");
- mockLdapTemplateSearch(list);
- Assert.assertTrue(ldapClient.doesUserExist("zhangsan"));
+ boolean result = ldapClient.doesUserExist("zhangsan");
+ Assert.assertTrue(result);
}
@Test
public void testDoesUserExistFail() {
- mockLdapTemplateSearch(null);
+ new Expectations(ldapClient) {
+ {
+ ldapClient.getDn((LdapQuery) any);
+ result = null;
+ }
+ };
Assert.assertFalse(ldapClient.doesUserExist("zhangsan"));
}
@Test(expected = RuntimeException.class)
public void testDoesUserExistException() {
- List<String> list = Lists.newArrayList();
- list.add("zhangsan");
- list.add("zhangsan");
- mockLdapTemplateSearch(list);
+ List<String> list = Arrays.asList("zhangsan", "zhangsan");
+ new Expectations(ldapClient) {
+ {
+ ldapClient.getDn((LdapQuery) any);
+ result = list;
+ }
+ };
Assert.assertTrue(ldapClient.doesUserExist("zhangsan"));
Assert.fail("No Exception throws.");
}
- @Test
- public void testCheckPassword() {
- mockLdapTemplateAuthenticate(ADMIN_PASSWORD);
- Assert.assertTrue(ldapClient.checkPassword("zhangsan",
ADMIN_PASSWORD));
- Assert.assertFalse(ldapClient.checkPassword("zhangsan", "123"));
- }
-
@Test
public void testGetGroups() {
- List<String> list = Lists.newArrayList();
- list.add("cn=groupName,ou=groups,dc=example,dc=com");
- mockLdapTemplateSearch(list);
+ List<String> list =
Arrays.asList("cn=groupName,ou=groups,dc=example,dc=com");
+ new Expectations(ldapClient) {
+ {
+ ldapClient.getDn((LdapQuery) any);
+ result = list;
+ }
+ };
Assert.assertEquals(1, ldapClient.getGroups("zhangsan").size());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]