add some UT for default auth plugin (#12318)
This commit is contained in:
parent
97162438f7
commit
e8e8cd29c0
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.alibaba.nacos.auth.config;
|
package com.alibaba.nacos.auth.config;
|
||||||
|
|
||||||
|
import com.alibaba.nacos.auth.mock.MockAuthPluginServiceB;
|
||||||
import com.alibaba.nacos.sys.module.ModuleState;
|
import com.alibaba.nacos.sys.module.ModuleState;
|
||||||
import com.alibaba.nacos.sys.utils.ApplicationUtils;
|
import com.alibaba.nacos.sys.utils.ApplicationUtils;
|
||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
@ -45,7 +46,6 @@ class AuthModuleStateBuilderTest {
|
|||||||
void setUp() throws Exception {
|
void setUp() throws Exception {
|
||||||
when(context.getBean(AuthConfigs.class)).thenReturn(authConfigs);
|
when(context.getBean(AuthConfigs.class)).thenReturn(authConfigs);
|
||||||
ApplicationUtils.injectContext(context);
|
ApplicationUtils.injectContext(context);
|
||||||
when(authConfigs.getNacosAuthSystemType()).thenReturn("nacos");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterEach
|
@AfterEach
|
||||||
@ -54,10 +54,32 @@ class AuthModuleStateBuilderTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testBuild() {
|
void testBuild() {
|
||||||
|
when(authConfigs.getNacosAuthSystemType()).thenReturn("nacos");
|
||||||
|
|
||||||
ModuleState actual = new AuthModuleStateBuilder().build();
|
ModuleState actual = new AuthModuleStateBuilder().build();
|
||||||
assertFalse((Boolean) actual.getStates().get(AUTH_ENABLED));
|
assertFalse((Boolean) actual.getStates().get(AUTH_ENABLED));
|
||||||
assertFalse((Boolean) actual.getStates().get("login_page_enabled"));
|
assertFalse((Boolean) actual.getStates().get("login_page_enabled"));
|
||||||
assertEquals("nacos", actual.getStates().get("auth_system_type"));
|
assertEquals("nacos", actual.getStates().get("auth_system_type"));
|
||||||
assertTrue((Boolean) actual.getStates().get("auth_admin_request"));
|
assertTrue((Boolean) actual.getStates().get("auth_admin_request"));
|
||||||
|
|
||||||
|
when(authConfigs.getNacosAuthSystemType()).thenReturn(MockAuthPluginServiceB.TEST_PLUGIN);
|
||||||
|
ModuleState actual2 = new AuthModuleStateBuilder().build();
|
||||||
|
assertTrue((Boolean) actual2.getStates().get("login_page_enabled"));
|
||||||
|
assertEquals(MockAuthPluginServiceB.TEST_PLUGIN, actual2.getStates().get("auth_system_type"));
|
||||||
|
assertFalse((Boolean) actual2.getStates().get("auth_admin_request"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testCacheable() {
|
||||||
|
AuthModuleStateBuilder authModuleStateBuilder = new AuthModuleStateBuilder();
|
||||||
|
authModuleStateBuilder.build();
|
||||||
|
boolean cacheable = authModuleStateBuilder.isCacheable();
|
||||||
|
assertFalse(cacheable);
|
||||||
|
|
||||||
|
when(authConfigs.getNacosAuthSystemType()).thenReturn(MockAuthPluginServiceB.TEST_PLUGIN);
|
||||||
|
AuthModuleStateBuilder authModuleStateBuilder2 = new AuthModuleStateBuilder();
|
||||||
|
authModuleStateBuilder2.build();
|
||||||
|
boolean cacheable2 = authModuleStateBuilder2.isCacheable();
|
||||||
|
assertTrue(cacheable2);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1999-2021 Alibaba Group Holding Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.alibaba.nacos.auth.mock;
|
||||||
|
|
||||||
|
import com.alibaba.nacos.plugin.auth.api.IdentityContext;
|
||||||
|
import com.alibaba.nacos.plugin.auth.api.Permission;
|
||||||
|
import com.alibaba.nacos.plugin.auth.api.Resource;
|
||||||
|
import com.alibaba.nacos.plugin.auth.constant.ActionTypes;
|
||||||
|
import com.alibaba.nacos.plugin.auth.spi.server.AuthPluginService;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
public class MockAuthPluginServiceB implements AuthPluginService {
|
||||||
|
|
||||||
|
public static final String TEST_PLUGIN = "testB";
|
||||||
|
|
||||||
|
public static final String IDENTITY_TEST_KEY = "identity-test-key";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<String> identityNames() {
|
||||||
|
return Collections.singletonList(IDENTITY_TEST_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean enableAuth(ActionTypes action, String type) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean validateIdentity(IdentityContext identityContext, Resource resource) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean validateAuthority(IdentityContext identityContext, Permission permission) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getAuthServiceName() {
|
||||||
|
return TEST_PLUGIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isLoginEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAdminRequest() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -15,3 +15,4 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
com.alibaba.nacos.auth.mock.MockAuthPluginService
|
com.alibaba.nacos.auth.mock.MockAuthPluginService
|
||||||
|
com.alibaba.nacos.auth.mock.MockAuthPluginServiceB
|
||||||
|
@ -0,0 +1,211 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1999-2024 Alibaba Group Holding Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.alibaba.nacos.plugin.auth.impl.authenticate;
|
||||||
|
|
||||||
|
import com.alibaba.nacos.api.common.Constants;
|
||||||
|
import com.alibaba.nacos.plugin.auth.api.Permission;
|
||||||
|
import com.alibaba.nacos.plugin.auth.exception.AccessException;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.persistence.User;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.roles.NacosRoleServiceImpl;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.token.TokenManagerDelegate;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.users.NacosUser;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.users.NacosUserDetails;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.users.NacosUserDetailsServiceImpl;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.utils.PasswordEncoderUtil;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
import org.springframework.mock.web.MockHttpServletRequest;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class AbstractAuthenticationManagerTest {
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private AbstractAuthenticationManager abstractAuthenticationManager;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private NacosUserDetailsServiceImpl userDetailsService;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private TokenManagerDelegate jwtTokenManager;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private NacosRoleServiceImpl roleService;
|
||||||
|
|
||||||
|
private User user;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() throws Exception {
|
||||||
|
user = new User();
|
||||||
|
user.setUsername("nacos");
|
||||||
|
user.setPassword(PasswordEncoderUtil.encode("test"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAuthenticate1() {
|
||||||
|
assertThrows(AccessException.class, () -> {
|
||||||
|
abstractAuthenticationManager.authenticate(null, "pwd");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAuthenticate2() {
|
||||||
|
assertThrows(AccessException.class, () -> {
|
||||||
|
abstractAuthenticationManager.authenticate("nacos", null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAuthenticate3() throws AccessException {
|
||||||
|
NacosUserDetails nacosUserDetails = new NacosUserDetails(user);
|
||||||
|
|
||||||
|
when(userDetailsService.loadUserByUsername(anyString())).thenReturn(nacosUserDetails);
|
||||||
|
|
||||||
|
when(jwtTokenManager.createToken(anyString())).thenReturn("token");
|
||||||
|
|
||||||
|
NacosUser nacosUser = abstractAuthenticationManager.authenticate("nacos", "test");
|
||||||
|
|
||||||
|
assertEquals("token", nacosUser.getToken());
|
||||||
|
assertEquals(user.getUsername(), nacosUser.getUserName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAuthenticate4() {
|
||||||
|
when(userDetailsService.loadUserByUsername(anyString())).thenReturn(null);
|
||||||
|
|
||||||
|
assertThrows(AccessException.class, () -> {
|
||||||
|
abstractAuthenticationManager.authenticate("nacos", "test");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAuthenticate5() {
|
||||||
|
assertThrows(AccessException.class, () -> {
|
||||||
|
abstractAuthenticationManager.authenticate("");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAuthenticate6() throws AccessException {
|
||||||
|
NacosUser nacosUser = new NacosUser();
|
||||||
|
|
||||||
|
when(jwtTokenManager.parseToken(anyString())).thenReturn(nacosUser);
|
||||||
|
NacosUser authenticate = abstractAuthenticationManager.authenticate("token");
|
||||||
|
|
||||||
|
assertEquals(nacosUser, authenticate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAuthenticate7() throws AccessException {
|
||||||
|
NacosUser nacosUser = new NacosUser();
|
||||||
|
when(jwtTokenManager.parseToken(anyString())).thenReturn(nacosUser);
|
||||||
|
|
||||||
|
MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
|
||||||
|
mockHttpServletRequest.addHeader(AuthConstants.AUTHORIZATION_HEADER, AuthConstants.TOKEN_PREFIX + "-token");
|
||||||
|
NacosUser authenticate = abstractAuthenticationManager.authenticate(mockHttpServletRequest);
|
||||||
|
|
||||||
|
assertEquals(nacosUser, authenticate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAuthenticate8() throws AccessException {
|
||||||
|
NacosUser nacosUser = new NacosUser();
|
||||||
|
when(jwtTokenManager.parseToken(anyString())).thenReturn(nacosUser);
|
||||||
|
|
||||||
|
MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
|
||||||
|
mockHttpServletRequest.addHeader(AuthConstants.AUTHORIZATION_HEADER, "token");
|
||||||
|
mockHttpServletRequest.addParameter(Constants.ACCESS_TOKEN, "token");
|
||||||
|
NacosUser authenticate = abstractAuthenticationManager.authenticate(mockHttpServletRequest);
|
||||||
|
|
||||||
|
assertEquals(nacosUser, authenticate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAuthenticate9() throws AccessException {
|
||||||
|
NacosUserDetails nacosUserDetails = new NacosUserDetails(user);
|
||||||
|
when(userDetailsService.loadUserByUsername(anyString())).thenReturn(nacosUserDetails);
|
||||||
|
|
||||||
|
when(jwtTokenManager.createToken(anyString())).thenReturn("token");
|
||||||
|
MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
|
||||||
|
mockHttpServletRequest.addHeader(AuthConstants.AUTHORIZATION_HEADER, "token");
|
||||||
|
mockHttpServletRequest.addParameter(AuthConstants.PARAM_USERNAME, "nacos");
|
||||||
|
mockHttpServletRequest.addParameter(AuthConstants.PARAM_PASSWORD, "test");
|
||||||
|
NacosUser authenticate = abstractAuthenticationManager.authenticate(mockHttpServletRequest);
|
||||||
|
|
||||||
|
assertEquals("token", authenticate.getToken());
|
||||||
|
assertEquals(user.getUsername(), authenticate.getUserName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAuthorize() {
|
||||||
|
Permission permission = new Permission();
|
||||||
|
NacosUser nacosUser = new NacosUser();
|
||||||
|
when(roleService.hasPermission(nacosUser, permission)).thenReturn(false);
|
||||||
|
|
||||||
|
assertThrows(AccessException.class, () -> {
|
||||||
|
abstractAuthenticationManager.authorize(permission, nacosUser);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testHasGlobalAdminRole() {
|
||||||
|
when(roleService.hasGlobalAdminRole(anyString())).thenReturn(true);
|
||||||
|
|
||||||
|
boolean hasGlobalAdminRole = abstractAuthenticationManager.hasGlobalAdminRole("nacos");
|
||||||
|
|
||||||
|
assertTrue(hasGlobalAdminRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testHasGlobalAdminRole2() {
|
||||||
|
when(roleService.hasGlobalAdminRole()).thenReturn(true);
|
||||||
|
|
||||||
|
boolean hasGlobalAdminRole = abstractAuthenticationManager.hasGlobalAdminRole();
|
||||||
|
|
||||||
|
assertTrue(hasGlobalAdminRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testHasGlobalAdminRole3() {
|
||||||
|
NacosUser nacosUser = new NacosUser("nacos");
|
||||||
|
nacosUser.setGlobalAdmin(true);
|
||||||
|
|
||||||
|
boolean hasGlobalAdminRole = abstractAuthenticationManager.hasGlobalAdminRole(nacosUser);
|
||||||
|
|
||||||
|
assertTrue(hasGlobalAdminRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testHasGlobalAdminRole4() {
|
||||||
|
NacosUser nacosUser = new NacosUser("nacos");
|
||||||
|
nacosUser.setGlobalAdmin(false);
|
||||||
|
when(roleService.hasGlobalAdminRole(anyString())).thenReturn(true);
|
||||||
|
boolean hasGlobalAdminRole = abstractAuthenticationManager.hasGlobalAdminRole(nacosUser);
|
||||||
|
|
||||||
|
assertTrue(hasGlobalAdminRole);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1999-2024 Alibaba Group Holding Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.alibaba.nacos.plugin.auth.impl.authenticate;
|
||||||
|
|
||||||
|
import com.alibaba.nacos.plugin.auth.exception.AccessException;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.persistence.User;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.roles.NacosRoleServiceImpl;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.token.TokenManagerDelegate;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.users.NacosUser;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.users.NacosUserDetails;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.users.NacosUserDetailsServiceImpl;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.utils.PasswordEncoderUtil;
|
||||||
|
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.jupiter.MockitoExtension;
|
||||||
|
import org.springframework.ldap.core.LdapTemplate;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class LdapAuthenticationManagerTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private NacosUserDetailsServiceImpl userDetailsService;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private TokenManagerDelegate jwtTokenManager;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private NacosRoleServiceImpl roleService;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private LdapTemplate ldapTemplate;
|
||||||
|
|
||||||
|
private LdapAuthenticationManager ldapAuthenticationManager;
|
||||||
|
|
||||||
|
private User user;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() throws Exception {
|
||||||
|
user = new User();
|
||||||
|
user.setUsername("nacos");
|
||||||
|
user.setPassword(PasswordEncoderUtil.encode("test"));
|
||||||
|
ldapAuthenticationManager = new LdapAuthenticationManager(ldapTemplate, userDetailsService, jwtTokenManager,
|
||||||
|
roleService, "", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testLdapAuthenticate() throws AccessException {
|
||||||
|
NacosUserDetails nacosUserDetails = new NacosUserDetails(user);
|
||||||
|
when(userDetailsService.loadUserByUsername(anyString())).thenReturn(nacosUserDetails);
|
||||||
|
NacosUser authenticate = ldapAuthenticationManager.authenticate("nacos", "test");
|
||||||
|
assertEquals(user.getUsername(), authenticate.getUserName());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,89 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1999-2024 Alibaba Group Holding Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.alibaba.nacos.plugin.auth.impl.controller;
|
||||||
|
|
||||||
|
import com.alibaba.nacos.common.model.RestResult;
|
||||||
|
import com.alibaba.nacos.persistence.model.Page;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.persistence.PermissionInfo;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.roles.NacosRoleServiceImpl;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class PermissionControllerTest {
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private PermissionController permissionController;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private NacosRoleServiceImpl nacosRoleService;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() throws Exception {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGetPermissions() {
|
||||||
|
Page<PermissionInfo> permissionInfoPage = new Page<PermissionInfo>();
|
||||||
|
|
||||||
|
when(nacosRoleService.getPermissionsFromDatabase(anyString(), anyInt(), anyInt())).thenReturn(
|
||||||
|
permissionInfoPage);
|
||||||
|
|
||||||
|
Object permissions = permissionController.getPermissions(1, 10, "admin");
|
||||||
|
assertEquals(permissionInfoPage, permissions);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testFuzzySearchPermission() {
|
||||||
|
Page<PermissionInfo> permissionInfoPage = new Page<PermissionInfo>();
|
||||||
|
|
||||||
|
when(nacosRoleService.findPermissionsLike4Page(anyString(), anyInt(), anyInt())).thenReturn(permissionInfoPage);
|
||||||
|
|
||||||
|
Page<PermissionInfo> permissions = permissionController.fuzzySearchPermission(1, 10, "admin");
|
||||||
|
assertEquals(permissionInfoPage, permissions);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAddPermission() {
|
||||||
|
|
||||||
|
RestResult<String> result = (RestResult<String>) permissionController.addPermission("admin", "test", "test");
|
||||||
|
|
||||||
|
verify(nacosRoleService, times(1)).addPermission(anyString(), anyString(), anyString());
|
||||||
|
assertEquals(200, result.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testDeletePermission() {
|
||||||
|
RestResult<String> result = (RestResult<String>) permissionController.deletePermission("admin", "test", "test");
|
||||||
|
|
||||||
|
verify(nacosRoleService, times(1)).deletePermission(anyString(), anyString(), anyString());
|
||||||
|
assertEquals(200, result.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,114 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 1999-2024 Alibaba Group Holding Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.alibaba.nacos.plugin.auth.impl.controller;
|
||||||
|
|
||||||
|
import com.alibaba.nacos.common.model.RestResult;
|
||||||
|
import com.alibaba.nacos.persistence.model.Page;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.persistence.RoleInfo;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.roles.NacosRoleServiceImpl;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class RoleControllerTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private NacosRoleServiceImpl roleService;
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
|
private RoleController roleController;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() throws Exception {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGetRoles() {
|
||||||
|
Page<RoleInfo> rolesTest = new Page<RoleInfo>();
|
||||||
|
|
||||||
|
when(roleService.getRolesFromDatabase(anyString(), anyString(), anyInt(), anyInt())).thenReturn(rolesTest);
|
||||||
|
Object roles = roleController.getRoles(1, 10, "nacos", "test");
|
||||||
|
|
||||||
|
assertEquals(rolesTest, roles);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testFuzzySearchRole() {
|
||||||
|
|
||||||
|
Page<RoleInfo> rolesTest = new Page<RoleInfo>();
|
||||||
|
|
||||||
|
when(roleService.findRolesLike4Page(anyString(), anyString(), anyInt(), anyInt())).thenReturn(rolesTest);
|
||||||
|
|
||||||
|
Page<RoleInfo> roleInfoPage = roleController.fuzzySearchRole(1, 10, "nacos", "test");
|
||||||
|
|
||||||
|
assertEquals(rolesTest, roleInfoPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSearchRoles() {
|
||||||
|
List<String> test = new ArrayList<>();
|
||||||
|
|
||||||
|
when(roleService.findRolesLikeRoleName(anyString())).thenReturn(test);
|
||||||
|
|
||||||
|
List<String> list = roleController.searchRoles("test");
|
||||||
|
assertEquals(test, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAddRole() {
|
||||||
|
RestResult<String> result = (RestResult<String>) roleController.addRole("test", "nacos");
|
||||||
|
|
||||||
|
verify(roleService, times(1)).addRole(anyString(), anyString());
|
||||||
|
|
||||||
|
assertEquals(200, result.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testDeleteRole1() {
|
||||||
|
RestResult<String> result = (RestResult<String>) roleController.deleteRole("test", null);
|
||||||
|
|
||||||
|
verify(roleService, times(1)).deleteRole(anyString());
|
||||||
|
|
||||||
|
assertEquals(200, result.getCode());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testDeleteRole2() {
|
||||||
|
RestResult<String> result = (RestResult<String>) roleController.deleteRole("test", "nacos");
|
||||||
|
|
||||||
|
verify(roleService, times(1)).deleteRole(anyString(), anyString());
|
||||||
|
|
||||||
|
assertEquals(200, result.getCode());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -17,29 +17,47 @@
|
|||||||
package com.alibaba.nacos.plugin.auth.impl.controller;
|
package com.alibaba.nacos.plugin.auth.impl.controller;
|
||||||
|
|
||||||
import com.alibaba.nacos.auth.config.AuthConfigs;
|
import com.alibaba.nacos.auth.config.AuthConfigs;
|
||||||
|
import com.alibaba.nacos.common.model.RestResult;
|
||||||
|
import com.alibaba.nacos.persistence.model.Page;
|
||||||
|
import com.alibaba.nacos.plugin.auth.api.IdentityContext;
|
||||||
import com.alibaba.nacos.plugin.auth.exception.AccessException;
|
import com.alibaba.nacos.plugin.auth.exception.AccessException;
|
||||||
import com.alibaba.nacos.plugin.auth.impl.authenticate.IAuthenticationManager;
|
import com.alibaba.nacos.plugin.auth.impl.authenticate.IAuthenticationManager;
|
||||||
import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants;
|
import com.alibaba.nacos.plugin.auth.impl.constant.AuthConstants;
|
||||||
import com.alibaba.nacos.plugin.auth.impl.constant.AuthSystemTypes;
|
import com.alibaba.nacos.plugin.auth.impl.constant.AuthSystemTypes;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.persistence.RoleInfo;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.persistence.User;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.roles.NacosRoleServiceImpl;
|
||||||
import com.alibaba.nacos.plugin.auth.impl.token.TokenManagerDelegate;
|
import com.alibaba.nacos.plugin.auth.impl.token.TokenManagerDelegate;
|
||||||
import com.alibaba.nacos.plugin.auth.impl.users.NacosUser;
|
import com.alibaba.nacos.plugin.auth.impl.users.NacosUser;
|
||||||
|
import com.alibaba.nacos.plugin.auth.impl.users.NacosUserDetailsServiceImpl;
|
||||||
import com.alibaba.nacos.sys.env.EnvUtil;
|
import com.alibaba.nacos.sys.env.EnvUtil;
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.jupiter.MockitoExtension;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.mock.env.MockEnvironment;
|
import org.springframework.mock.env.MockEnvironment;
|
||||||
|
import org.springframework.mock.web.MockHttpServletRequest;
|
||||||
|
import org.springframework.mock.web.MockHttpServletResponse;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@ -61,27 +79,32 @@ class UserControllerTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private TokenManagerDelegate tokenManagerDelegate;
|
private TokenManagerDelegate tokenManagerDelegate;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private NacosUserDetailsServiceImpl userDetailsService;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private NacosRoleServiceImpl roleService;
|
||||||
|
|
||||||
|
@InjectMocks
|
||||||
private UserController userController;
|
private UserController userController;
|
||||||
|
|
||||||
private NacosUser user;
|
private NacosUser user;
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setUp() throws Exception {
|
void setUp() throws Exception {
|
||||||
userController = new UserController();
|
|
||||||
user = new NacosUser();
|
user = new NacosUser();
|
||||||
user.setUserName("nacos");
|
user.setUserName("nacos");
|
||||||
user.setGlobalAdmin(true);
|
user.setGlobalAdmin(true);
|
||||||
user.setToken("1234567890");
|
user.setToken("1234567890");
|
||||||
injectObject("authConfigs", authConfigs);
|
|
||||||
injectObject("iAuthenticationManager", authenticationManager);
|
|
||||||
|
|
||||||
MockEnvironment mockEnvironment = new MockEnvironment();
|
MockEnvironment mockEnvironment = new MockEnvironment();
|
||||||
mockEnvironment.setProperty(AuthConstants.TOKEN_SECRET_KEY, Base64.getEncoder()
|
mockEnvironment.setProperty(AuthConstants.TOKEN_SECRET_KEY, Base64.getEncoder().encodeToString(
|
||||||
.encodeToString("SecretKey0123$567890$234567890123456789012345678901234567890123456789".getBytes(StandardCharsets.UTF_8)));
|
"SecretKey0123$567890$234567890123456789012345678901234567890123456789".getBytes(
|
||||||
mockEnvironment.setProperty(AuthConstants.TOKEN_EXPIRE_SECONDS, AuthConstants.DEFAULT_TOKEN_EXPIRE_SECONDS.toString());
|
StandardCharsets.UTF_8)));
|
||||||
|
mockEnvironment.setProperty(AuthConstants.TOKEN_EXPIRE_SECONDS,
|
||||||
|
AuthConstants.DEFAULT_TOKEN_EXPIRE_SECONDS.toString());
|
||||||
|
|
||||||
EnvUtil.setEnvironment(mockEnvironment);
|
EnvUtil.setEnvironment(mockEnvironment);
|
||||||
injectObject("jwtTokenManager", tokenManagerDelegate);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -98,9 +121,224 @@ class UserControllerTest {
|
|||||||
assertTrue(actualString.contains("\"globalAdmin\":true"));
|
assertTrue(actualString.contains("\"globalAdmin\":true"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void injectObject(String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException {
|
@Test
|
||||||
Field field = UserController.class.getDeclaredField(fieldName);
|
void testCreateUser1() {
|
||||||
field.setAccessible(true);
|
when(userDetailsService.getUserFromDatabase("nacos")).thenReturn(null);
|
||||||
field.set(userController, value);
|
RestResult<String> result = (RestResult<String>) userController.createUser("nacos", "test");
|
||||||
|
assertEquals(200, result.getCode());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testCreateUser2() {
|
||||||
|
when(userDetailsService.getUserFromDatabase("nacos")).thenReturn(new User());
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
userController.createUser("nacos", "test");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testCreateAdminUser1() {
|
||||||
|
when(authConfigs.getNacosAuthSystemType()).thenReturn(AuthSystemTypes.NACOS.name());
|
||||||
|
when(authenticationManager.hasGlobalAdminRole()).thenReturn(true);
|
||||||
|
|
||||||
|
RestResult<String> result = (RestResult<String>) userController.createAdminUser("test");
|
||||||
|
|
||||||
|
assertEquals(HttpStatus.CONFLICT.value(), result.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testCreateAdminUser2() {
|
||||||
|
RestResult<String> result = (RestResult<String>) userController.createAdminUser("test");
|
||||||
|
|
||||||
|
assertEquals(HttpStatus.NOT_IMPLEMENTED.value(), result.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testCreateAdminUser3() {
|
||||||
|
when(authConfigs.getNacosAuthSystemType()).thenReturn(AuthSystemTypes.NACOS.name());
|
||||||
|
when(authenticationManager.hasGlobalAdminRole()).thenReturn(false);
|
||||||
|
ObjectNode result = (ObjectNode) userController.createAdminUser("test");
|
||||||
|
|
||||||
|
assertEquals("test", result.get(AuthConstants.PARAM_PASSWORD).asText());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testDeleteUser1() {
|
||||||
|
List<RoleInfo> roleInfoList = new ArrayList<>(1);
|
||||||
|
RoleInfo testRole = new RoleInfo();
|
||||||
|
testRole.setUsername("nacos");
|
||||||
|
testRole.setRole(AuthConstants.GLOBAL_ADMIN_ROLE);
|
||||||
|
roleInfoList.add(testRole);
|
||||||
|
|
||||||
|
when(roleService.getRoles(anyString())).thenReturn(roleInfoList);
|
||||||
|
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
userController.deleteUser("nacos");
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testDeleteUser2() {
|
||||||
|
List<RoleInfo> roleInfoList = new ArrayList<>(1);
|
||||||
|
RoleInfo testRole = new RoleInfo();
|
||||||
|
testRole.setUsername("nacos");
|
||||||
|
testRole.setRole("testRole");
|
||||||
|
roleInfoList.add(testRole);
|
||||||
|
|
||||||
|
when(roleService.getRoles(anyString())).thenReturn(roleInfoList);
|
||||||
|
|
||||||
|
RestResult<String> result = (RestResult<String>) userController.deleteUser("nacos");
|
||||||
|
assertEquals(200, result.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testUpdateUser1() throws IOException {
|
||||||
|
|
||||||
|
when(authConfigs.isAuthEnabled()).thenReturn(false);
|
||||||
|
when(userDetailsService.getUserFromDatabase(anyString())).thenReturn(new User());
|
||||||
|
MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
|
||||||
|
MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
|
||||||
|
RestResult<String> result = (RestResult<String>) userController.updateUser("nacos", "test",
|
||||||
|
mockHttpServletResponse, mockHttpServletRequest);
|
||||||
|
assertEquals(200, result.getCode());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testUpdateUser2() {
|
||||||
|
|
||||||
|
when(authConfigs.isAuthEnabled()).thenReturn(false);
|
||||||
|
when(userDetailsService.getUserFromDatabase(anyString())).thenReturn(null);
|
||||||
|
MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
|
||||||
|
MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
|
||||||
|
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> {
|
||||||
|
userController.updateUser("nacos", "test", mockHttpServletResponse, mockHttpServletRequest);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testUpdateUser3() throws IOException {
|
||||||
|
|
||||||
|
when(authConfigs.isAuthEnabled()).thenReturn(true);
|
||||||
|
MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
|
||||||
|
MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
|
||||||
|
Object result = userController.updateUser("nacos", "test", mockHttpServletResponse, mockHttpServletRequest);
|
||||||
|
|
||||||
|
assertNull(result);
|
||||||
|
assertEquals(HttpServletResponse.SC_UNAUTHORIZED, mockHttpServletResponse.getStatus());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testUpdateUser4() throws IOException {
|
||||||
|
|
||||||
|
when(authConfigs.isAuthEnabled()).thenReturn(true);
|
||||||
|
when(userDetailsService.getUserFromDatabase(anyString())).thenReturn(new User());
|
||||||
|
MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
|
||||||
|
IdentityContext identityContext = new IdentityContext();
|
||||||
|
identityContext.setParameter(AuthConstants.NACOS_USER_KEY, user);
|
||||||
|
mockHttpServletRequest.getSession()
|
||||||
|
.setAttribute(com.alibaba.nacos.plugin.auth.constant.Constants.Identity.IDENTITY_CONTEXT,
|
||||||
|
identityContext);
|
||||||
|
MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
|
||||||
|
RestResult<String> result = (RestResult<String>) userController.updateUser("nacos", "test",
|
||||||
|
mockHttpServletResponse, mockHttpServletRequest);
|
||||||
|
assertEquals(200, result.getCode());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testUpdateUser5() throws IOException, AccessException {
|
||||||
|
|
||||||
|
when(authConfigs.isAuthEnabled()).thenReturn(true);
|
||||||
|
when(userDetailsService.getUserFromDatabase(anyString())).thenReturn(new User());
|
||||||
|
when(authenticationManager.authenticate(any(MockHttpServletRequest.class))).thenReturn(user);
|
||||||
|
|
||||||
|
MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
|
||||||
|
IdentityContext identityContext = new IdentityContext();
|
||||||
|
identityContext.setParameter(AuthConstants.NACOS_USER_KEY, null);
|
||||||
|
mockHttpServletRequest.getSession()
|
||||||
|
.setAttribute(com.alibaba.nacos.plugin.auth.constant.Constants.Identity.IDENTITY_CONTEXT,
|
||||||
|
identityContext);
|
||||||
|
MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
|
||||||
|
RestResult<String> result = (RestResult<String>) userController.updateUser("nacos", "test",
|
||||||
|
mockHttpServletResponse, mockHttpServletRequest);
|
||||||
|
assertEquals(200, result.getCode());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testUpdateUser6() throws IOException, AccessException {
|
||||||
|
|
||||||
|
when(authConfigs.isAuthEnabled()).thenReturn(true);
|
||||||
|
when(authenticationManager.authenticate(any(MockHttpServletRequest.class))).thenReturn(null);
|
||||||
|
|
||||||
|
MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
|
||||||
|
IdentityContext identityContext = new IdentityContext();
|
||||||
|
identityContext.setParameter(AuthConstants.NACOS_USER_KEY, null);
|
||||||
|
mockHttpServletRequest.getSession()
|
||||||
|
.setAttribute(com.alibaba.nacos.plugin.auth.constant.Constants.Identity.IDENTITY_CONTEXT,
|
||||||
|
identityContext);
|
||||||
|
MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
|
||||||
|
Object result = userController.updateUser("nacos", "test", mockHttpServletResponse, mockHttpServletRequest);
|
||||||
|
|
||||||
|
assertNull(result);
|
||||||
|
assertEquals(HttpServletResponse.SC_UNAUTHORIZED, mockHttpServletResponse.getStatus());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testUpdateUser7() throws IOException, AccessException {
|
||||||
|
|
||||||
|
when(authConfigs.isAuthEnabled()).thenReturn(true);
|
||||||
|
when(authenticationManager.authenticate(any(MockHttpServletRequest.class))).thenThrow(
|
||||||
|
new AccessException("test"));
|
||||||
|
|
||||||
|
MockHttpServletRequest mockHttpServletRequest = new MockHttpServletRequest();
|
||||||
|
IdentityContext identityContext = new IdentityContext();
|
||||||
|
identityContext.setParameter(AuthConstants.NACOS_USER_KEY, null);
|
||||||
|
mockHttpServletRequest.getSession()
|
||||||
|
.setAttribute(com.alibaba.nacos.plugin.auth.constant.Constants.Identity.IDENTITY_CONTEXT,
|
||||||
|
identityContext);
|
||||||
|
MockHttpServletResponse mockHttpServletResponse = new MockHttpServletResponse();
|
||||||
|
Object result = userController.updateUser("nacos", "test", mockHttpServletResponse, mockHttpServletRequest);
|
||||||
|
|
||||||
|
assertNull(result);
|
||||||
|
assertEquals(HttpServletResponse.SC_FORBIDDEN, mockHttpServletResponse.getStatus());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGetUsers() {
|
||||||
|
Page<User> userPage = new Page<>();
|
||||||
|
|
||||||
|
when(userDetailsService.getUsersFromDatabase(anyInt(), anyInt(), anyString())).thenReturn(userPage);
|
||||||
|
|
||||||
|
Page<User> nacos = userController.getUsers(1, 10, "nacos");
|
||||||
|
assertEquals(userPage, nacos);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testFuzzySearchUser() {
|
||||||
|
Page<User> userPage = new Page<>();
|
||||||
|
|
||||||
|
when(userDetailsService.findUsersLike4Page(anyString(), anyInt(), anyInt())).thenReturn(userPage);
|
||||||
|
|
||||||
|
Page<User> nacos = userController.fuzzySearchUser(1, 10, "nacos");
|
||||||
|
assertEquals(userPage, nacos);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSearchUsersLikeUsername() {
|
||||||
|
List<String> test = new ArrayList<>(1);
|
||||||
|
|
||||||
|
when(userDetailsService.findUserLikeUsername(anyString())).thenReturn(test);
|
||||||
|
List<String> list = userController.searchUsersLikeUsername("nacos");
|
||||||
|
|
||||||
|
assertEquals(test, list);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user