mirror of
https://github.com/didi/KnowStreaming.git
synced 2026-01-06 05:22:16 +08:00
monitor、openapi、account模块下的单元测试
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
package com.xiaojukeji.kafka.manager.account;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.account.common.EnterpriseStaff;
|
||||
import com.xiaojukeji.kafka.manager.account.component.AbstractEnterpriseStaffService;
|
||||
import com.xiaojukeji.kafka.manager.account.config.BaseTest;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.AccountDO;
|
||||
import com.xiaojukeji.kafka.manager.dao.AccountDao;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author wyc
|
||||
* @date 2021/12/30
|
||||
*/
|
||||
public class AbstractEnterpriseStaffServiceTest extends BaseTest {
|
||||
|
||||
@Autowired
|
||||
@InjectMocks
|
||||
private AbstractEnterpriseStaffService abstractEnterpriseStaffService;
|
||||
|
||||
@Mock
|
||||
private AccountDao accountDao;
|
||||
|
||||
@BeforeMethod
|
||||
public void init() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
}
|
||||
|
||||
|
||||
private EnterpriseStaff getEnterpriseStaff() {
|
||||
EnterpriseStaff staff = new EnterpriseStaff("username", "username", "department");
|
||||
return staff;
|
||||
}
|
||||
|
||||
private AccountDO getAccountDO() {
|
||||
AccountDO accountDO = new AccountDO();
|
||||
accountDO.setUsername("username");
|
||||
return accountDO;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getEnterpriseStaffByNameTest() {
|
||||
// 返回null测试
|
||||
getEnterpriseStaffByName2NullTest();
|
||||
|
||||
// 成功测试
|
||||
getEnterpriseStaffByName2SuccessTest();
|
||||
}
|
||||
|
||||
private void getEnterpriseStaffByName2NullTest() {
|
||||
Mockito.when(accountDao.getByName(Mockito.anyString())).thenReturn(null);
|
||||
Assert.assertNull(abstractEnterpriseStaffService.getEnterpriseStaffByName("username"));
|
||||
}
|
||||
|
||||
private void getEnterpriseStaffByName2SuccessTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
EnterpriseStaff staff = getEnterpriseStaff();
|
||||
Mockito.when(accountDao.getByName(Mockito.anyString())).thenReturn(accountDO);
|
||||
EnterpriseStaff result = abstractEnterpriseStaffService.getEnterpriseStaffByName("username");
|
||||
Assert.assertTrue(result.getUsername().equals(staff.getUsername()) && result.getChineseName().equals(staff.getChineseName()));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void searchEnterpriseStaffByKeyWordTest() {
|
||||
// 返回空集合测试
|
||||
searchEnterpriseStaffByKeyWord2EmptyTest();
|
||||
|
||||
// 返回非空集合测试
|
||||
searchEnterpriseStaffByKeyWord2AllTest();
|
||||
}
|
||||
|
||||
private void searchEnterpriseStaffByKeyWord2EmptyTest() {
|
||||
Mockito.when(accountDao.searchByNamePrefix(Mockito.anyString())).thenReturn(new ArrayList<>());
|
||||
Assert.assertTrue(abstractEnterpriseStaffService.searchEnterpriseStaffByKeyWord("username").isEmpty());
|
||||
}
|
||||
|
||||
private void searchEnterpriseStaffByKeyWord2AllTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
Mockito.when(accountDao.searchByNamePrefix(Mockito.anyString())).thenReturn(Arrays.asList(accountDO));
|
||||
|
||||
EnterpriseStaff staff = getEnterpriseStaff();
|
||||
List<EnterpriseStaff> result = abstractEnterpriseStaffService.searchEnterpriseStaffByKeyWord("username");
|
||||
Assert.assertTrue(!result.isEmpty() && result.stream().allMatch(enterpriseStaff -> enterpriseStaff.getChineseName().equals(staff.getChineseName()) &&
|
||||
enterpriseStaff.getUsername().equals(staff.getUsername())));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,244 @@
|
||||
package com.xiaojukeji.kafka.manager.account;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.account.component.AbstractSingleSignOn;
|
||||
import com.xiaojukeji.kafka.manager.account.component.ldap.LdapAuthentication;
|
||||
import com.xiaojukeji.kafka.manager.account.config.BaseTest;
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.AccountRoleEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.constant.LoginConstant;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.LoginDTO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.AccountDO;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.EncryptUtil;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.mockito.internal.util.reflection.FieldSetter;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.MockHttpServletResponse;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author wyc
|
||||
* @date 2021/12/30
|
||||
*/
|
||||
public class AbstractSingleSignOnTest extends BaseTest {
|
||||
@Autowired
|
||||
@InjectMocks
|
||||
private AbstractSingleSignOn abstractSingleSignOn;
|
||||
|
||||
@Mock
|
||||
private AccountService accountService;
|
||||
|
||||
@Mock
|
||||
private LdapAuthentication ldapAuthentication;
|
||||
|
||||
@BeforeMethod
|
||||
public void init() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
}
|
||||
|
||||
private HttpServletRequest getHttpServletRequest() {
|
||||
HttpServletRequest request = new MockHttpServletRequest();
|
||||
return request;
|
||||
}
|
||||
|
||||
private HttpServletResponse getHttpServletResponse() {
|
||||
HttpServletResponse response = new MockHttpServletResponse();
|
||||
return response;
|
||||
}
|
||||
|
||||
private LoginDTO getLoginDTO() {
|
||||
LoginDTO dto = new LoginDTO();
|
||||
dto.setUsername("username");
|
||||
dto.setPassword("password");
|
||||
return dto;
|
||||
}
|
||||
|
||||
private AccountDO getAccountDO() {
|
||||
AccountDO accountDO = new AccountDO();
|
||||
accountDO.setUsername("username");
|
||||
accountDO.setPassword("password");
|
||||
|
||||
return accountDO;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loginAndGetLdapTest() throws NoSuchFieldException {
|
||||
// username为null测试
|
||||
loginAndGetLdap2ParamNullTest();
|
||||
|
||||
// LDAP未激活测试,从最后的return返回
|
||||
loginAndGetLdap2LdapDisabledTest();
|
||||
|
||||
// LDAP激活,返回false测试
|
||||
loginAndGetLdap2LdapEnabledReturnFalseTest();
|
||||
|
||||
// LDAP激活,返回true测试
|
||||
loginAndGetLdap2LdapEnabledReturnTrueTest();
|
||||
|
||||
loginAndGetLdap2FailureTest();
|
||||
|
||||
// name illegal 测试
|
||||
loginAndGetLdap2NameIllegalTest();
|
||||
|
||||
// password illegal 测试
|
||||
loginAndGetLdap2PasswordIllegalTest();
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void resetAbstractSingleSignOn() throws NoSuchFieldException {
|
||||
// 通过反射将abstractSingleSignOn内属性的值置于初始状态,因为每个private测试中会通过反射改变abstractSingleSignOn成员变量的值
|
||||
Field accountLdapEnabled = abstractSingleSignOn.getClass().getDeclaredField("accountLdapEnabled");
|
||||
FieldSetter.setField(abstractSingleSignOn, accountLdapEnabled, null);
|
||||
|
||||
Field authUserRegistrationRole = abstractSingleSignOn.getClass().getDeclaredField("authUserRegistrationRole");
|
||||
FieldSetter.setField(abstractSingleSignOn, authUserRegistrationRole, null);
|
||||
|
||||
Field authUserRegistration = abstractSingleSignOn.getClass().getDeclaredField("authUserRegistration");
|
||||
FieldSetter.setField(abstractSingleSignOn, authUserRegistration, false);
|
||||
}
|
||||
|
||||
private void loginAndGetLdap2ParamNullTest() throws NoSuchFieldException {
|
||||
resetAbstractSingleSignOn();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
LoginDTO loginDTO = getLoginDTO();
|
||||
loginDTO.setUsername(null);
|
||||
Assert.assertEquals(abstractSingleSignOn.loginAndGetLdap(request, response, loginDTO).toString(), Result.buildFailure("Missing parameters").toString());
|
||||
}
|
||||
|
||||
private void loginAndGetLdap2LdapDisabledTest() throws NoSuchFieldException {
|
||||
resetAbstractSingleSignOn();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
|
||||
LoginDTO loginDTO = getLoginDTO();
|
||||
String pass = EncryptUtil.md5(loginDTO.getPassword());
|
||||
|
||||
AccountDO accountDO1 = getAccountDO();
|
||||
accountDO1.setPassword(pass);
|
||||
|
||||
Result<AccountDO> result = Result.buildSuc(accountDO1);
|
||||
Mockito.when(accountService.getAccountDO(Mockito.any())).thenReturn(result);
|
||||
Assert.assertEquals(abstractSingleSignOn.loginAndGetLdap(request, response, loginDTO).toString(), Result.buildSuc(result.getData().getUsername()).toString());
|
||||
}
|
||||
|
||||
private void loginAndGetLdap2LdapEnabledReturnFalseTest() throws NoSuchFieldException {
|
||||
resetAbstractSingleSignOn();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
LoginDTO dto = getLoginDTO();
|
||||
// 通过反射将abstractSingleSignOn对象中accountLdapEnabled属性设置为true
|
||||
Field accountLdapEnabled = abstractSingleSignOn.getClass().getDeclaredField("accountLdapEnabled");
|
||||
FieldSetter.setField(abstractSingleSignOn, accountLdapEnabled, true);
|
||||
|
||||
Mockito.when(ldapAuthentication.authenticate(Mockito.anyString(), Mockito.anyString())).thenReturn(false);
|
||||
Assert.assertEquals(abstractSingleSignOn.loginAndGetLdap(request, response, dto).toString(), Result.buildFrom(ResultStatus.LDAP_AUTHENTICATION_FAILED).toString());
|
||||
}
|
||||
|
||||
private void loginAndGetLdap2LdapEnabledReturnTrueTest() throws NoSuchFieldException {
|
||||
resetAbstractSingleSignOn();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
LoginDTO dto = getLoginDTO();
|
||||
|
||||
Mockito.when(accountService.getAccountDO(Mockito.any())).thenReturn(null);
|
||||
|
||||
// 通过反射将abstractSingleSignOn对象中accountLdapEnabled属性设置为true
|
||||
Field accountLdapEnabled = abstractSingleSignOn.getClass().getDeclaredField("accountLdapEnabled");
|
||||
FieldSetter.setField(abstractSingleSignOn, accountLdapEnabled, true);
|
||||
|
||||
Mockito.when(ldapAuthentication.authenticate(Mockito.anyString(), Mockito.anyString())).thenReturn(true);
|
||||
|
||||
// 通过反射初始化成员变量,防止出现空指针异常
|
||||
Field authUserRegistrationRole = abstractSingleSignOn.getClass().getDeclaredField("authUserRegistrationRole");
|
||||
FieldSetter.setField(abstractSingleSignOn, authUserRegistrationRole, AccountRoleEnum.NORMAL.getMessage());
|
||||
|
||||
Field authUserRegistration = abstractSingleSignOn.getClass().getDeclaredField("authUserRegistration");
|
||||
FieldSetter.setField(abstractSingleSignOn, authUserRegistration, true);
|
||||
|
||||
|
||||
Assert.assertEquals(abstractSingleSignOn.loginAndGetLdap(request, response, dto).toString(), Result.buildSuc(dto.getUsername()).toString());
|
||||
}
|
||||
|
||||
private void loginAndGetLdap2FailureTest() throws NoSuchFieldException {
|
||||
resetAbstractSingleSignOn();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
LoginDTO dto = getLoginDTO();
|
||||
Result result = Result.buildFailure("fail");
|
||||
Mockito.when(accountService.getAccountDO(Mockito.any())).thenReturn(result);
|
||||
Assert.assertEquals(abstractSingleSignOn.loginAndGetLdap(request, response, dto).toString(), result.toString());
|
||||
}
|
||||
|
||||
private void loginAndGetLdap2NameIllegalTest() throws NoSuchFieldException {
|
||||
resetAbstractSingleSignOn();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
LoginDTO dto = getLoginDTO();
|
||||
|
||||
Result result = Result.buildSuc();
|
||||
Mockito.when(accountService.getAccountDO(Mockito.any())).thenReturn(result);
|
||||
Assert.assertEquals(abstractSingleSignOn.loginAndGetLdap(request, response, dto).toString(), Result.buildFailure("username illegal").toString());
|
||||
}
|
||||
|
||||
private void loginAndGetLdap2PasswordIllegalTest() throws NoSuchFieldException {
|
||||
resetAbstractSingleSignOn();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
LoginDTO dto = getLoginDTO();
|
||||
AccountDO accountDO = getAccountDO();
|
||||
Result<AccountDO> result = Result.buildSuc(accountDO);
|
||||
Mockito.when(accountService.getAccountDO(Mockito.any())).thenReturn(result);
|
||||
Assert.assertEquals(abstractSingleSignOn.loginAndGetLdap(request, response, dto).toString(), Result.buildFailure("password illegal").toString());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void logoutTest() {
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
abstractSingleSignOn.logout(request, response, true);
|
||||
Assert.assertEquals(response.getStatus(), 401);
|
||||
Assert.assertEquals(response.getHeader("location"), "");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkLoginAndGetLdapTest() {
|
||||
// 返回null测试
|
||||
checkLoginAndGetLdap2NullTest();
|
||||
|
||||
// 成功测试
|
||||
checkLoginAndGetLdap2SuccessTest();
|
||||
}
|
||||
|
||||
private void checkLoginAndGetLdap2NullTest() {
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
Assert.assertNull(abstractSingleSignOn.checkLoginAndGetLdap(request));
|
||||
}
|
||||
|
||||
private void checkLoginAndGetLdap2SuccessTest() {
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
request.getSession().setAttribute(LoginConstant.SESSION_USERNAME_KEY, "username");
|
||||
Assert.assertEquals(abstractSingleSignOn.checkLoginAndGetLdap(request), "username");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setRedirectToLoginPageTest() {
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
response.setStatus(401);
|
||||
response.setHeader("location", "");
|
||||
Assert.assertEquals(response.getStatus(), 401);
|
||||
Assert.assertEquals(response.getHeader("location"), "");
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,287 @@
|
||||
package com.xiaojukeji.kafka.manager.account;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.account.common.EnterpriseStaff;
|
||||
import com.xiaojukeji.kafka.manager.account.component.AbstractEnterpriseStaffService;
|
||||
import com.xiaojukeji.kafka.manager.account.config.BaseTest;
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.AccountRoleEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.constant.Constant;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.account.Account;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.AccountDO;
|
||||
import com.xiaojukeji.kafka.manager.dao.AccountDao;
|
||||
import com.xiaojukeji.kafka.manager.service.service.ConfigService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.OperateRecordService;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xuguang
|
||||
* @Date 2021/12/25
|
||||
* @author wyc
|
||||
* @Date 2021/12/29
|
||||
*/
|
||||
public class AccountServiceTest {
|
||||
public class AccountServiceTest extends BaseTest {
|
||||
@Autowired
|
||||
@InjectMocks
|
||||
private AccountService accountService;
|
||||
|
||||
@Mock
|
||||
private AccountDao accountDao;
|
||||
|
||||
@Mock
|
||||
private OperateRecordService operateRecordService;
|
||||
|
||||
@Mock
|
||||
private AbstractEnterpriseStaffService enterpriseStaffService;
|
||||
|
||||
@Mock
|
||||
private ConfigService configService;
|
||||
|
||||
@BeforeMethod
|
||||
public void init() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
}
|
||||
|
||||
private AccountDO getAccountDO() {
|
||||
AccountDO accountDO = new AccountDO();
|
||||
accountDO.setUsername("test_username");
|
||||
accountDO.setPassword("test_password");
|
||||
accountDO.setRole(0);
|
||||
return accountDO;
|
||||
}
|
||||
|
||||
private EnterpriseStaff getEnterpriseStaff() {
|
||||
EnterpriseStaff staff = new EnterpriseStaff("username", "ChineseName", "department");
|
||||
return staff;
|
||||
}
|
||||
|
||||
private Account getAccount() {
|
||||
Account account = new Account();
|
||||
return account;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createAccountTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
// 创建成功测试
|
||||
createAccount2SuccessTest(accountDO);
|
||||
|
||||
// 主键重复测试
|
||||
createAccount2DuplicateKeyExceptionTest(accountDO);
|
||||
}
|
||||
|
||||
private void createAccount2SuccessTest(AccountDO accountDO) {
|
||||
Mockito.when(accountDao.addNewAccount(Mockito.any())).thenReturn(1);
|
||||
Assert.assertEquals(accountService.createAccount(accountDO), ResultStatus.SUCCESS);
|
||||
}
|
||||
|
||||
private void createAccount2DuplicateKeyExceptionTest(AccountDO accountDO) {
|
||||
Mockito.when(accountDao.addNewAccount(Mockito.any())).thenThrow(DuplicateKeyException.class);
|
||||
Assert.assertEquals(accountService.createAccount(accountDO), ResultStatus.RESOURCE_ALREADY_EXISTED);
|
||||
}
|
||||
|
||||
private void createAccount2MySQLErrorTest(AccountDO accountDO) {
|
||||
Mockito.when(accountDao.addNewAccount(Mockito.any())).thenReturn(-1);
|
||||
Assert.assertEquals(accountService.createAccount(accountDO), ResultStatus.MYSQL_ERROR);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void deleteByNameTest() {
|
||||
// 删除成功测试
|
||||
deleteName2SuccessTest();
|
||||
|
||||
// MySQL_ERROR错误测试
|
||||
deleteName2MySQLErrorTest();
|
||||
}
|
||||
|
||||
private void deleteName2SuccessTest() {
|
||||
Mockito.when(accountDao.deleteByName(Mockito.anyString())).thenReturn(1);
|
||||
Assert.assertEquals(accountService.deleteByName("username", "admin"), ResultStatus.SUCCESS);
|
||||
}
|
||||
|
||||
private void deleteName2MySQLErrorTest() {
|
||||
Mockito.when(accountDao.deleteByName(Mockito.anyString())).thenReturn(-1);
|
||||
Assert.assertEquals(accountService.deleteByName("username", "admin"), ResultStatus.MYSQL_ERROR);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateAccountTest() {
|
||||
// 账号不存在测试
|
||||
updateAccount2AccountNotExistTest();
|
||||
|
||||
// 更新成功测试
|
||||
updateAccount2SuccessTest();
|
||||
|
||||
// MySQL_ERROR测试
|
||||
updateAccount2MySQLErrorTest();
|
||||
}
|
||||
|
||||
private void updateAccount2AccountNotExistTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
Mockito.when(accountDao.getByName(Mockito.anyString())).thenReturn(null);
|
||||
Assert.assertEquals(accountService.updateAccount(accountDO), ResultStatus.ACCOUNT_NOT_EXIST);
|
||||
}
|
||||
|
||||
private void updateAccount2SuccessTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
Mockito.when(accountDao.getByName(Mockito.anyString())).thenReturn(accountDO);
|
||||
Mockito.when(accountDao.updateByName(Mockito.any())).thenReturn(1);
|
||||
Assert.assertEquals(accountService.updateAccount(accountDO), ResultStatus.SUCCESS);
|
||||
}
|
||||
|
||||
private void updateAccount2MySQLErrorTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
Mockito.when(accountDao.getByName(Mockito.anyString())).thenReturn(accountDO);
|
||||
Mockito.when(accountDao.updateByName(Mockito.any())).thenReturn(-1);
|
||||
Assert.assertEquals(accountService.updateAccount(accountDO), ResultStatus.MYSQL_ERROR);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAccountDOTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
Result<AccountDO> expectedResult = Result.buildSuc(accountDO);
|
||||
|
||||
Mockito.when(accountDao.getByName(Mockito.anyString())).thenReturn(accountDO);
|
||||
Assert.assertEquals(accountService.getAccountDO(accountDO.getUsername()).toString(), expectedResult.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void listTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
List<AccountDO> list = new ArrayList<>();
|
||||
list.add(accountDO);
|
||||
Mockito.when(accountDao.list()).thenReturn(list);
|
||||
List<AccountDO> actualResult = accountService.list();
|
||||
Assert.assertTrue(!actualResult.isEmpty() && actualResult.stream().allMatch(account -> account.getUsername().equals(accountDO.getUsername()) &&
|
||||
account.getPassword().equals(accountDO.getPassword())));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void searchAccountByPrefixTest() {
|
||||
EnterpriseStaff staff = getEnterpriseStaff();
|
||||
List<EnterpriseStaff> expectedResult = new ArrayList<>();
|
||||
expectedResult.add(staff);
|
||||
Mockito.when(enterpriseStaffService.searchEnterpriseStaffByKeyWord(Mockito.anyString())).thenReturn(expectedResult);
|
||||
List<EnterpriseStaff> actualResult = accountService.searchAccountByPrefix("prefix");
|
||||
|
||||
Assert.assertTrue(!actualResult.isEmpty() && actualResult.stream().allMatch(enterpriseStaff -> enterpriseStaff.getUsername().equals(staff.getUsername())));
|
||||
}
|
||||
|
||||
// 因为flush只会执行一次,因此需要分开测试
|
||||
@Test(description = "普通角色测试")
|
||||
public void getAccountRoleFromCache2NormalTest() {
|
||||
Assert.assertEquals(accountService.getAccountRoleFromCache("username"), AccountRoleEnum.NORMAL);
|
||||
}
|
||||
|
||||
@Test(description = "op角色测试")
|
||||
public void getAccountRoleFromCache2OpTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
accountDO.setUsername("admin");
|
||||
accountDO.setRole(2);
|
||||
|
||||
Mockito.when(accountDao.list()).thenReturn(Arrays.asList(accountDO));
|
||||
Assert.assertEquals(accountService.getAccountRoleFromCache("admin"), AccountRoleEnum.OP);
|
||||
}
|
||||
|
||||
|
||||
@Test(description = "自动审批测试")
|
||||
public void getAccountFromCache2AutoHandleTest() {
|
||||
Account account = getAccount();
|
||||
account.setUsername(Constant.AUTO_HANDLE_USER_NAME);
|
||||
account.setChineseName(Constant.AUTO_HANDLE_CHINESE_NAME);
|
||||
account.setAccountRoleEnum(AccountRoleEnum.OP);
|
||||
Assert.assertEquals(accountService.getAccountFromCache(Constant.AUTO_HANDLE_USER_NAME).toString(), account.toString());
|
||||
}
|
||||
|
||||
@Test(description = "staff为null测试")
|
||||
public void getAccountFromCache2EnterpriseStaffIsNullTest() {
|
||||
Account account = getAccount();
|
||||
account.setUsername("username1");
|
||||
account.setChineseName("username1");
|
||||
account.setAccountRoleEnum(AccountRoleEnum.NORMAL);
|
||||
|
||||
Mockito.when(enterpriseStaffService.getEnterpriseStaffByName(Mockito.anyString())).thenReturn(null);
|
||||
Assert.assertEquals(accountService.getAccountFromCache("username1").toString(), account.toString());
|
||||
}
|
||||
|
||||
@Test(description = "staff不为null测试")
|
||||
public void getAccountFromCache2EnterpriseStaffIsNotNullTest() {
|
||||
Account account = getAccount();
|
||||
account.setUsername("username");
|
||||
account.setChineseName("ChineseName");
|
||||
account.setAccountRoleEnum(AccountRoleEnum.NORMAL);
|
||||
account.setDepartment("department");
|
||||
EnterpriseStaff enterpriseStaff = getEnterpriseStaff();
|
||||
|
||||
Mockito.when(enterpriseStaffService.getEnterpriseStaffByName(Mockito.any())).thenReturn(enterpriseStaff);
|
||||
Assert.assertEquals(accountService.getAccountFromCache("username").toString(), account.toString());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test(description = "op角色测试")
|
||||
public void isAdminOrderHandler2OpTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
accountDO.setUsername("admin");
|
||||
accountDO.setRole(2);
|
||||
|
||||
Mockito.when(accountDao.list()).thenReturn(Arrays.asList(accountDO));
|
||||
Assert.assertTrue(accountService.isAdminOrderHandler("admin"));
|
||||
}
|
||||
|
||||
@Test(description = "ADMIN_ORDER_HANDLER_CACHE包含用户名测试")
|
||||
public void isAdminOrderHandler2CacheContainsTest() {
|
||||
Mockito.when(configService.getArrayByKey(Mockito.anyString(), Mockito.any())).thenReturn(Arrays.asList("username"));
|
||||
Mockito.when(accountDao.list()).thenReturn(new ArrayList<>());
|
||||
Assert.assertTrue(accountService.isAdminOrderHandler("username"));
|
||||
}
|
||||
|
||||
|
||||
@Test(description = "普通角色测试")
|
||||
public void isAdminOrderHandler2NormalTest() {
|
||||
Mockito.when(accountDao.list()).thenReturn(new ArrayList<>());
|
||||
Assert.assertFalse(accountService.isAdminOrderHandler("username"));
|
||||
}
|
||||
|
||||
@Test(description = "op角色测试")
|
||||
public void isOpOrRd2OpTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
accountDO.setUsername("admin");
|
||||
accountDO.setRole(2);
|
||||
|
||||
Mockito.when(accountDao.list()).thenReturn(Arrays.asList(accountDO));
|
||||
Assert.assertTrue(accountService.isOpOrRd("admin"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isOpOrRdTest2RdTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
accountDO.setUsername("admin");
|
||||
accountDO.setRole(1);
|
||||
Mockito.when(accountDao.list()).thenReturn(Arrays.asList(accountDO));
|
||||
Assert.assertTrue(accountService.isOpOrRd("admin"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAdminOrderHandlerFromCacheTest() {
|
||||
AccountDO accountDO = getAccountDO();
|
||||
accountDO.setUsername("username");
|
||||
accountDO.setRole(2);
|
||||
|
||||
Mockito.when(accountDao.list()).thenReturn(Arrays.asList(accountDO));
|
||||
List<Account> actualList = accountService.getAdminOrderHandlerFromCache();
|
||||
Assert.assertTrue(!actualList.isEmpty() && actualList.stream().allMatch(account -> account.getUsername().equals(accountDO.getUsername())));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,17 +1,198 @@
|
||||
package com.xiaojukeji.kafka.manager.account;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.account.component.AbstractSingleSignOn;
|
||||
import com.xiaojukeji.kafka.manager.account.component.login.trick.TrickLoginService;
|
||||
import com.xiaojukeji.kafka.manager.account.config.BaseTest;
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.AccountRoleEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.constant.ApiPrefix;
|
||||
import com.xiaojukeji.kafka.manager.common.constant.LoginConstant;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.account.Account;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.mock.web.MockHttpServletRequest;
|
||||
import org.springframework.mock.web.MockHttpServletResponse;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import javax.servlet.http.*;
|
||||
|
||||
/**
|
||||
* @author xuguang
|
||||
* @Date 2021/12/25
|
||||
* @author wyc
|
||||
* @Date 2021/12/29
|
||||
*/
|
||||
public class LoginServiceTest extends BaseTest {
|
||||
@Autowired
|
||||
@InjectMocks
|
||||
private LoginService loginService;
|
||||
|
||||
@Mock
|
||||
private AbstractSingleSignOn singleSignOn;
|
||||
|
||||
@Mock
|
||||
private AccountService accountService;
|
||||
|
||||
@Mock
|
||||
private TrickLoginService trickLoginService;
|
||||
|
||||
@BeforeMethod
|
||||
public void init() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
}
|
||||
|
||||
private Account getAccount() {
|
||||
Account account = new Account();
|
||||
account.setUsername("username");
|
||||
return account;
|
||||
}
|
||||
|
||||
private HttpServletRequest getHttpServletRequest() {
|
||||
HttpServletRequest request = new MockHttpServletRequest();
|
||||
return request;
|
||||
}
|
||||
|
||||
private HttpServletResponse getHttpServletResponse() {
|
||||
HttpServletResponse response = new MockHttpServletResponse();
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
Assert.assertEquals("", "");
|
||||
public void loginTest() {
|
||||
// 失败测试
|
||||
login2FailureTest();
|
||||
|
||||
// 成功测试
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
login2SuccessTest(request, response);
|
||||
}
|
||||
|
||||
private void login2SuccessTest(HttpServletRequest request, HttpServletResponse response) {
|
||||
Account account = getAccount();
|
||||
Result<Account> expectResult = Result.buildSuc(account);
|
||||
Result<String> midResult = Result.buildSuc();
|
||||
Mockito.when(singleSignOn.loginAndGetLdap(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(midResult);
|
||||
Mockito.when(accountService.getAccountFromCache(Mockito.any())).thenReturn(account);
|
||||
Assert.assertEquals(loginService.login(request, response, null).toString(), expectResult.toString());
|
||||
}
|
||||
|
||||
private void login2FailureTest() {
|
||||
Result<String> result = new Result<>();
|
||||
result.setCode(ResultStatus.FAIL.getCode());
|
||||
result.setMessage(ResultStatus.FAIL.getMessage());
|
||||
Mockito.when(singleSignOn.loginAndGetLdap(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(result);
|
||||
Result<Account> actualResult = loginService.login(null, null, null);
|
||||
Assert.assertEquals(actualResult.toString(), result.toString());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void checkLoginTest() {
|
||||
// classRequestMappingValue为null测试
|
||||
checkLogin2ClassValueIsNullTest();
|
||||
|
||||
// 白名单接口测试
|
||||
checkLogin2SSOTest();
|
||||
|
||||
// trick登陆返回用户名为空
|
||||
checkLogin2TrickFalseTest();
|
||||
|
||||
// 权限检查normal接口测试
|
||||
checkLogin2NormalTest();
|
||||
|
||||
// 权限检查RD接口, 成功测试
|
||||
checkLogin2RDSuccessTest();
|
||||
|
||||
// 权限检查RD接口, 失败测试
|
||||
checkLogin2RDFailureTest();
|
||||
|
||||
// 权限检查OP接口, 成功测试
|
||||
checkLogin2OPSuccessTest();
|
||||
|
||||
// 权限检查OP接口,失败测试
|
||||
checkLogin2OPFailureTest();
|
||||
}
|
||||
|
||||
private void checkLogin2ClassValueIsNullTest() {
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
Mockito.doNothing().when(singleSignOn).setRedirectToLoginPage(Mockito.any());
|
||||
Assert.assertFalse(loginService.checkLogin(request, response, null));
|
||||
Assert.assertEquals(response.getStatus(), HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
private void checkLogin2SSOTest() {
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
Assert.assertTrue(loginService.checkLogin(request, response, ApiPrefix.API_V1_SSO_PREFIX));
|
||||
}
|
||||
|
||||
private void checkLogin2TrickFalseTest() {
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
Mockito.when(trickLoginService.isTrickLoginOn(Mockito.any())).thenReturn(true);
|
||||
Mockito.when(trickLoginService.checkTrickLogin(Mockito.any())).thenReturn("");
|
||||
Mockito.doNothing().when(singleSignOn).setRedirectToLoginPage(response);
|
||||
Assert.assertFalse(loginService.checkLogin(request, response, "string"));
|
||||
Assert.assertEquals(response.getStatus(), HttpServletResponse.SC_UNAUTHORIZED);
|
||||
}
|
||||
|
||||
private void checkLogin2NormalTest() {
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
Mockito.when(trickLoginService.isTrickLoginOn(Mockito.any())).thenReturn(true);
|
||||
Mockito.when(trickLoginService.checkTrickLogin(Mockito.any())).thenReturn("username");
|
||||
Assert.assertTrue(loginService.checkLogin(request, response, ApiPrefix.API_V1_NORMAL_PREFIX));
|
||||
Assert.assertEquals(request.getSession().getAttribute(LoginConstant.SESSION_USERNAME_KEY), "username");
|
||||
}
|
||||
|
||||
private void checkLogin2RDSuccessTest() {
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
Mockito.when(trickLoginService.isTrickLoginOn(Mockito.any())).thenReturn(true);
|
||||
Mockito.when(trickLoginService.checkTrickLogin(Mockito.any())).thenReturn("username");
|
||||
Mockito.when(accountService.getAccountRoleFromCache(Mockito.any())).thenReturn(AccountRoleEnum.OP);
|
||||
Assert.assertTrue(loginService.checkLogin(request, response, ApiPrefix.API_V1_RD_PREFIX));
|
||||
Assert.assertEquals(request.getSession().getAttribute(LoginConstant.SESSION_USERNAME_KEY), "username");
|
||||
}
|
||||
|
||||
private void checkLogin2RDFailureTest() {
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
Mockito.when(trickLoginService.isTrickLoginOn(Mockito.any())).thenReturn(true);
|
||||
Mockito.when(trickLoginService.checkTrickLogin(Mockito.any())).thenReturn("username");
|
||||
Mockito.when(accountService.getAccountRoleFromCache(Mockito.any())).thenReturn(AccountRoleEnum.NORMAL);
|
||||
Assert.assertFalse(loginService.checkLogin(request, response, ApiPrefix.API_V1_RD_PREFIX));
|
||||
Assert.assertEquals(response.getStatus(), HttpServletResponse.SC_FORBIDDEN);
|
||||
}
|
||||
|
||||
private void checkLogin2OPSuccessTest() {
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
Mockito.when(trickLoginService.isTrickLoginOn(Mockito.any())).thenReturn(true);
|
||||
Mockito.when(trickLoginService.checkTrickLogin(Mockito.any())).thenReturn("username");
|
||||
Mockito.when(accountService.getAccountRoleFromCache(Mockito.any())).thenReturn(AccountRoleEnum.OP);
|
||||
Assert.assertTrue(loginService.checkLogin(request, response, ApiPrefix.API_V1_OP_PREFIX));
|
||||
Assert.assertEquals(request.getSession().getAttribute(LoginConstant.SESSION_USERNAME_KEY), "username");
|
||||
}
|
||||
|
||||
private void checkLogin2OPFailureTest() {
|
||||
HttpServletResponse response = getHttpServletResponse();
|
||||
HttpServletRequest request = getHttpServletRequest();
|
||||
Mockito.when(trickLoginService.isTrickLoginOn(Mockito.any())).thenReturn(true);
|
||||
Mockito.when(trickLoginService.checkTrickLogin(Mockito.any())).thenReturn("username");
|
||||
Mockito.when(accountService.getAccountRoleFromCache(Mockito.any())).thenReturn(AccountRoleEnum.NORMAL);
|
||||
Assert.assertFalse(loginService.checkLogin(request, response, ApiPrefix.API_V1_OP_PREFIX));
|
||||
Assert.assertEquals(response.getStatus(), HttpServletResponse.SC_FORBIDDEN);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -13,9 +13,9 @@ spring:
|
||||
active: dev
|
||||
datasource:
|
||||
kafka-manager:
|
||||
jdbc-url: jdbc:mysql://localhost:3306/logi_kafka_manager?characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
|
||||
jdbc-url: jdbc:mysql://10.190.7.220:3306/user_test?characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
|
||||
username: root
|
||||
password: 123456
|
||||
password: 2PHCnL6RRM
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
main:
|
||||
allow-bean-definition-overriding: true
|
||||
|
||||
Reference in New Issue
Block a user