Skip to content

Commit

Permalink
upgrade module naocs-plugin-impl from junit4 to junit5
Browse files Browse the repository at this point in the history
  • Loading branch information
shalk committed Jun 14, 2024
1 parent 833e6ca commit b1cb02b
Show file tree
Hide file tree
Showing 20 changed files with 466 additions and 417 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@
import com.alibaba.nacos.plugin.auth.impl.users.NacosUserDetails;
import com.alibaba.nacos.plugin.auth.impl.users.NacosUserDetailsServiceImpl;
import org.apache.commons.lang.StringUtils;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
import org.mockito.stubbing.Answer;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
Expand All @@ -40,10 +41,30 @@
import java.util.ArrayList;
import java.util.List;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
public class LdapAuthenticationProviderTest {
@ExtendWith(MockitoExtension.class)
// todo remove this
@MockitoSettings(strictness = Strictness.LENIENT)
class LdapAuthenticationProviderTest {

private static final String LDAP_PREFIX = "LDAP_";

private final String adminUserName = "nacos";

private final String normalUserName = "normal";

private final String filterPrefix = "uid";

private final boolean caseSensitive = true;

Method isAdmin;

Method ldapLogin;

@Mock
private NacosUserDetailsServiceImpl userDetailsService;
Expand All @@ -60,32 +81,18 @@ public class LdapAuthenticationProviderTest {

private List<RoleInfo> roleInfos = new ArrayList<>();

private final String adminUserName = "nacos";

private final String normalUserName = "normal";

private final String filterPrefix = "uid";

private final boolean caseSensitive = true;

private static final String LDAP_PREFIX = "LDAP_";

Method isAdmin;

Method ldapLogin;

private String defaultPassWord = "nacos";

@Before
public void setUp() throws NoSuchMethodException {
@BeforeEach
void setUp() throws NoSuchMethodException {
RoleInfo adminRole = new RoleInfo();
adminRole.setRole(AuthConstants.GLOBAL_ADMIN_ROLE);
adminRole.setUsername(adminUserName);
roleInfos.add(adminRole);
when(nacosRoleService.getRoles(adminUserName)).thenReturn(roleInfos);
when(nacosRoleService.getRoles(normalUserName)).thenReturn(new ArrayList<>());
when(ldapTemplate.authenticate("", "(" + filterPrefix + "=" + adminUserName + ")", defaultPassWord))
.thenAnswer(new Answer<Boolean>() {
when(ldapTemplate.authenticate("", "(" + filterPrefix + "=" + adminUserName + ")", defaultPassWord)).thenAnswer(
new Answer<Boolean>() {
@Override
public Boolean answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
Expand All @@ -97,88 +104,86 @@ public Boolean answer(InvocationOnMock invocation) throws Throwable {
return false;
}
});
this.ldapAuthenticationProvider = new LdapAuthenticationProvider(ldapTemplate, userDetailsService,
nacosRoleService, filterPrefix, caseSensitive);
this.ldapAuthenticationProviderForCloseCaseSensitive = new LdapAuthenticationProvider(ldapTemplate,
userDetailsService, nacosRoleService, filterPrefix, !caseSensitive);
this.ldapAuthenticationProvider = new LdapAuthenticationProvider(ldapTemplate, userDetailsService, nacosRoleService, filterPrefix,
caseSensitive);
this.ldapAuthenticationProviderForCloseCaseSensitive = new LdapAuthenticationProvider(ldapTemplate, userDetailsService,
nacosRoleService, filterPrefix, !caseSensitive);
isAdmin = LdapAuthenticationProvider.class.getDeclaredMethod("isAdmin", String.class);
isAdmin.setAccessible(true);
ldapLogin = LdapAuthenticationProvider.class.getDeclaredMethod("ldapLogin", String.class, String.class);
ldapLogin.setAccessible(true);
}

@Test
public void testIsAdmin() {
void testIsAdmin() {
try {
Boolean result = (Boolean) isAdmin.invoke(ldapAuthenticationProvider, adminUserName);
Assert.assertTrue(result);
assertTrue(result);
} catch (IllegalAccessException e) {
Assert.fail();
fail();
} catch (InvocationTargetException e) {
Assert.fail();
fail();
}
try {
Boolean result = (Boolean) isAdmin.invoke(ldapAuthenticationProvider, normalUserName);
Assert.assertTrue(!result);
assertFalse(result);
} catch (IllegalAccessException e) {
Assert.fail();
fail();
} catch (InvocationTargetException e) {
Assert.fail();
fail();
}

}

@Test
public void testldapLogin() {
void testldapLogin() {
try {
Boolean result = (Boolean) ldapLogin.invoke(ldapAuthenticationProvider, adminUserName, defaultPassWord);
Assert.assertTrue(result);
assertTrue(result);
} catch (IllegalAccessException e) {
Assert.fail();
fail();
} catch (InvocationTargetException e) {
Assert.fail();
fail();
}
try {
Boolean result = (Boolean) ldapLogin.invoke(ldapAuthenticationProvider, adminUserName, "123");
Assert.assertTrue(!result);
assertFalse(result);
} catch (IllegalAccessException e) {
Assert.fail();
fail();
} catch (InvocationTargetException e) {
Assert.fail();
fail();
}
}

@Test
public void testDefaultCaseSensitive() {
void testDefaultCaseSensitive() {
String userName = StringUtils.upperCase(normalUserName);
when(ldapTemplate.authenticate("", "(" + filterPrefix + "=" + userName + ")", defaultPassWord))
.thenAnswer(new Answer<Boolean>() {
@Override
public Boolean answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
String b = (String) args[1];
String c = (String) args[2];
if (defaultPassWord.equals(c)) {
return true;
}
return false;
}
});
when(ldapTemplate.authenticate("", "(" + filterPrefix + "=" + userName + ")", defaultPassWord)).thenAnswer(new Answer<Boolean>() {
@Override
public Boolean answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
String b = (String) args[1];
String c = (String) args[2];
if (defaultPassWord.equals(c)) {
return true;
}
return false;
}
});
User userUpperCase = new User();
userUpperCase.setUsername(LDAP_PREFIX + userName);
userUpperCase.setPassword(defaultPassWord);
when(userDetailsService.loadUserByUsername(LDAP_PREFIX + userName))
.thenReturn(new NacosUserDetails(userUpperCase));
when(userDetailsService.loadUserByUsername(LDAP_PREFIX + userName)).thenReturn(new NacosUserDetails(userUpperCase));
Authentication authentication = new UsernamePasswordAuthenticationToken(userName, defaultPassWord);
Authentication result = ldapAuthenticationProvider.authenticate(authentication);
NacosUserDetails nacosUserDetails = (NacosUserDetails) result.getPrincipal();
Assert.assertTrue(nacosUserDetails.getUsername().equals(LDAP_PREFIX + userName));
assertEquals(nacosUserDetails.getUsername(), LDAP_PREFIX + userName);
}

@Test
public void testCloseCaseSensitive() {
when(ldapTemplate.authenticate("", "(" + filterPrefix + "=" + normalUserName + ")", defaultPassWord))
.thenAnswer(new Answer<Boolean>() {
void testCloseCaseSensitive() {
when(ldapTemplate.authenticate("", "(" + filterPrefix + "=" + normalUserName + ")", defaultPassWord)).thenAnswer(
new Answer<Boolean>() {
@Override
public Boolean answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
Expand All @@ -193,12 +198,10 @@ public Boolean answer(InvocationOnMock invocation) throws Throwable {
User user = new User();
user.setUsername(LDAP_PREFIX + normalUserName);
user.setPassword(defaultPassWord);
when(userDetailsService.loadUserByUsername(LDAP_PREFIX + normalUserName))
.thenReturn(new NacosUserDetails(user));
Authentication authentication = new UsernamePasswordAuthenticationToken(StringUtils.upperCase(normalUserName),
defaultPassWord);
when(userDetailsService.loadUserByUsername(LDAP_PREFIX + normalUserName)).thenReturn(new NacosUserDetails(user));
Authentication authentication = new UsernamePasswordAuthenticationToken(StringUtils.upperCase(normalUserName), defaultPassWord);
Authentication result = ldapAuthenticationProviderForCloseCaseSensitive.authenticate(authentication);
NacosUserDetails nacosUserDetails = (NacosUserDetails) result.getPrincipal();
Assert.assertTrue(nacosUserDetails.getUsername().equals(LDAP_PREFIX + normalUserName));
assertEquals(nacosUserDetails.getUsername(), LDAP_PREFIX + normalUserName);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,29 @@
package com.alibaba.nacos.plugin.auth.impl.configuration;

import com.alibaba.nacos.sys.env.EnvUtil;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.type.AnnotatedTypeMetadata;

import static org.junit.jupiter.api.Assertions.assertFalse;

/**
* ConditionOnLdapAuth test.
*
* @ClassName: ConditionOnLdapAuthTest
* @Author: ChenHao26
* @Date: 2022/8/16 17:03
*/
@RunWith(MockitoJUnitRunner.class)
public class ConditionOnLdapAuthTest {
@ExtendWith(MockitoExtension.class)
class ConditionOnLdapAuthTest {

@Mock
private static ConfigurableEnvironment environment;

private ConditionOnLdapAuth conditionOnLdapAuth;

Expand All @@ -44,18 +49,15 @@ public class ConditionOnLdapAuthTest {
@Mock
private AnnotatedTypeMetadata annotatedTypeMetadata;

@Mock
private static ConfigurableEnvironment environment;

@Before
public void setup() {
@BeforeEach
void setup() {
conditionOnLdapAuth = new ConditionOnLdapAuth();
EnvUtil.setEnvironment(environment);
}

@Test
public void matches() {
void matches() {
boolean matches = conditionOnLdapAuth.matches(conditionContext, annotatedTypeMetadata);
Assert.assertFalse(matches);
assertFalse(matches);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@
import com.alibaba.nacos.plugin.auth.impl.users.NacosUser;
import com.alibaba.nacos.sys.env.EnvUtil;
import com.fasterxml.jackson.databind.JsonNode;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.mock.env.MockEnvironment;

import javax.servlet.http.HttpServletRequest;
Expand All @@ -39,12 +39,12 @@
import java.nio.charset.StandardCharsets;
import java.util.Base64;

import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
public class UserControllerTest {
@ExtendWith(MockitoExtension.class)
class UserControllerTest {

@Mock
private HttpServletRequest request;
Expand All @@ -65,8 +65,8 @@ public class UserControllerTest {

private NacosUser user;

@Before
public void setUp() throws Exception {
@BeforeEach
void setUp() throws Exception {
userController = new UserController();
user = new NacosUser();
user.setUserName("nacos");
Expand All @@ -76,18 +76,16 @@ public void setUp() throws Exception {
injectObject("iAuthenticationManager", authenticationManager);

MockEnvironment mockEnvironment = new MockEnvironment();
mockEnvironment.setProperty(AuthConstants.TOKEN_SECRET_KEY, Base64.getEncoder().encodeToString(
"SecretKey0123$567890$234567890123456789012345678901234567890123456789".getBytes(
StandardCharsets.UTF_8)));
mockEnvironment.setProperty(AuthConstants.TOKEN_EXPIRE_SECONDS,
AuthConstants.DEFAULT_TOKEN_EXPIRE_SECONDS.toString());
mockEnvironment.setProperty(AuthConstants.TOKEN_SECRET_KEY, Base64.getEncoder()
.encodeToString("SecretKey0123$567890$234567890123456789012345678901234567890123456789".getBytes(StandardCharsets.UTF_8)));
mockEnvironment.setProperty(AuthConstants.TOKEN_EXPIRE_SECONDS, AuthConstants.DEFAULT_TOKEN_EXPIRE_SECONDS.toString());

EnvUtil.setEnvironment(mockEnvironment);
injectObject("jwtTokenManager", tokenManagerDelegate);
}

@Test
public void testLoginWithAuthedUser() throws AccessException, IOException {
void testLoginWithAuthedUser() throws AccessException, IOException {
when(authenticationManager.authenticate(request)).thenReturn(user);
when(authenticationManager.hasGlobalAdminRole(user)).thenReturn(true);
when(authConfigs.getNacosAuthSystemType()).thenReturn(AuthSystemTypes.NACOS.name());
Expand Down
Loading

0 comments on commit b1cb02b

Please sign in to comment.