完成部分 SysUserServiceImplTest 单元测试
parent
f676153778
commit
81e7e04680
15
pom.xml
15
pom.xml
|
@ -46,7 +46,12 @@
|
||||||
<easyexcel.verion>2.2.7</easyexcel.verion>
|
<easyexcel.verion>2.2.7</easyexcel.verion>
|
||||||
<velocity.version>2.2</velocity.version>
|
<velocity.version>2.2</velocity.version>
|
||||||
<screw.version>1.0.5</screw.version>
|
<screw.version>1.0.5</screw.version>
|
||||||
|
<podam.version>7.2.6.RELEASE</podam.version>
|
||||||
|
<jedis-mock.version>0.1.16</jedis-mock.version>
|
||||||
<!-- 三方云服务相关 -->
|
<!-- 三方云服务相关 -->
|
||||||
|
<aliyun-java-sdk-core.version>4.5.18</aliyun-java-sdk-core.version>
|
||||||
|
<aliyun-java-sdk-dysmsapi.version>2.1.0</aliyun-java-sdk-dysmsapi.version>
|
||||||
|
<yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<!-- 依赖声明 -->
|
<!-- 依赖声明 -->
|
||||||
|
@ -213,14 +218,14 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.fppt</groupId> <!-- 单元测试,我们采用内嵌的 Redis 数据库 -->
|
<groupId>com.github.fppt</groupId> <!-- 单元测试,我们采用内嵌的 Redis 数据库 -->
|
||||||
<artifactId>jedis-mock</artifactId>
|
<artifactId>jedis-mock</artifactId>
|
||||||
<version>0.1.16</version>
|
<version>${jedis-mock.version}</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>uk.co.jemos.podam</groupId> <!-- 单元测试,随机生成 POJO 类 -->
|
<groupId>uk.co.jemos.podam</groupId> <!-- 单元测试,随机生成 POJO 类 -->
|
||||||
<artifactId>podam</artifactId>
|
<artifactId>podam</artifactId>
|
||||||
<version>7.2.6.RELEASE</version>
|
<version>${podam.version}</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
@ -278,18 +283,18 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.yunpian.sdk</groupId>
|
<groupId>com.yunpian.sdk</groupId>
|
||||||
<artifactId>yunpian-java-sdk</artifactId>
|
<artifactId>yunpian-java-sdk</artifactId>
|
||||||
<version>1.2.7</version>
|
<version>${yunpian-java-sdk.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.aliyun</groupId>
|
<groupId>com.aliyun</groupId>
|
||||||
<artifactId>aliyun-java-sdk-core</artifactId>
|
<artifactId>aliyun-java-sdk-core</artifactId>
|
||||||
<version>4.5.18</version>
|
<version>${aliyun-java-sdk-core.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.aliyun</groupId>
|
<groupId>com.aliyun</groupId>
|
||||||
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
|
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
|
||||||
<version>2.1.0</version>
|
<version>${aliyun-java-sdk-dysmsapi.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- SMS SDK end -->
|
<!-- SMS SDK end -->
|
||||||
|
|
||||||
|
|
|
@ -149,9 +149,9 @@ public class SysUserController {
|
||||||
// 手动创建导出 demo
|
// 手动创建导出 demo
|
||||||
List<SysUserImportExcelVO> list = Arrays.asList(
|
List<SysUserImportExcelVO> list = Arrays.asList(
|
||||||
SysUserImportExcelVO.builder().username("yudao").deptId(1L).email("yudao@iocoder.cn").mobile("15601691300")
|
SysUserImportExcelVO.builder().username("yudao").deptId(1L).email("yudao@iocoder.cn").mobile("15601691300")
|
||||||
.nickname("芋道").status(CommonStatusEnum.ENABLE.getStatus()).sex(SysSexEnum.MALE.getSEX()).build(),
|
.nickname("芋道").status(CommonStatusEnum.ENABLE.getStatus()).sex(SysSexEnum.MALE.getSex()).build(),
|
||||||
SysUserImportExcelVO.builder().username("yuanma").deptId(2L).email("yuanma@iocoder.cn").mobile("15601701300")
|
SysUserImportExcelVO.builder().username("yuanma").deptId(2L).email("yuanma@iocoder.cn").mobile("15601701300")
|
||||||
.nickname("源码").status(CommonStatusEnum.DISABLE.getStatus()).sex(SysSexEnum.FEMALE.getSEX()).build()
|
.nickname("源码").status(CommonStatusEnum.DISABLE.getStatus()).sex(SysSexEnum.FEMALE.getSex()).build()
|
||||||
);
|
);
|
||||||
|
|
||||||
// 输出
|
// 输出
|
||||||
|
|
|
@ -3,9 +3,9 @@ package cn.iocoder.dashboard.modules.system.controller.user.vo.profile;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import javax.validation.constraints.Email;
|
import javax.validation.constraints.Email;
|
||||||
import javax.validation.constraints.Pattern;
|
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
|
|
||||||
@ApiModel("用户个人信息更新 Request VO")
|
@ApiModel("用户个人信息更新 Request VO")
|
||||||
|
@ -22,7 +22,7 @@ public class SysUserProfileUpdateReqVO {
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
@ApiModelProperty(value = "手机号码", example = "15601691300")
|
@ApiModelProperty(value = "手机号码", example = "15601691300")
|
||||||
@Pattern(regexp = "^1(3|4|5|7|8)\\d{9}$",message = "手机号码格式错误")
|
@Length(min = 11, max = 11, message = "手机号长度必须 11 位")
|
||||||
private String mobile;
|
private String mobile;
|
||||||
|
|
||||||
@ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类")
|
@ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类")
|
||||||
|
|
|
@ -2,10 +2,10 @@ package cn.iocoder.dashboard.modules.system.controller.user.vo.user;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
import javax.validation.constraints.Email;
|
import javax.validation.constraints.Email;
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.Pattern;
|
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ public class SysUserBaseVO {
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
@ApiModelProperty(value = "手机号码", example = "15601691300")
|
@ApiModelProperty(value = "手机号码", example = "15601691300")
|
||||||
@Pattern(regexp = "^1(3|4|5|7|8)\\d{9}$",message = "手机号码格式错误")
|
@Length(min = 11, max = 11, message = "手机号长度必须 11 位")
|
||||||
private String mobile;
|
private String mobile;
|
||||||
|
|
||||||
@ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类")
|
@ApiModelProperty(value = "用户性别", example = "1", notes = "参见 SysSexEnum 枚举类")
|
||||||
|
|
|
@ -3,6 +3,11 @@ package cn.iocoder.dashboard.modules.system.enums.common;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 性别的枚举值
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public enum SysSexEnum {
|
public enum SysSexEnum {
|
||||||
|
@ -10,6 +15,9 @@ public enum SysSexEnum {
|
||||||
MALE(1), // 男
|
MALE(1), // 男
|
||||||
FEMALE(2); // 女
|
FEMALE(2); // 女
|
||||||
|
|
||||||
private final Integer SEX;
|
/**
|
||||||
|
* 性别
|
||||||
|
*/
|
||||||
|
private final Integer sex;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,17 +6,11 @@ import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
|
import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
|
||||||
import cn.iocoder.dashboard.common.exception.ServiceException;
|
import cn.iocoder.dashboard.common.exception.ServiceException;
|
||||||
import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil;
|
|
||||||
import cn.iocoder.dashboard.common.pojo.PageResult;
|
import cn.iocoder.dashboard.common.pojo.PageResult;
|
||||||
import cn.iocoder.dashboard.modules.infra.service.file.InfFileService;
|
import cn.iocoder.dashboard.modules.infra.service.file.InfFileService;
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
|
import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
|
import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserCreateReqVO;
|
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.*;
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserExportReqVO;
|
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportExcelVO;
|
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportRespVO;
|
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserPageReqVO;
|
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserUpdateReqVO;
|
|
||||||
import cn.iocoder.dashboard.modules.system.convert.user.SysUserConvert;
|
import cn.iocoder.dashboard.modules.system.convert.user.SysUserConvert;
|
||||||
import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO;
|
import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO;
|
||||||
import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO;
|
import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO;
|
||||||
|
@ -33,14 +27,9 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
|
import static cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*;
|
import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*;
|
||||||
|
|
||||||
|
|
||||||
|
@ -142,8 +131,6 @@ public class SysUserServiceImpl implements SysUserService {
|
||||||
updateObj.setId(id);
|
updateObj.setId(id);
|
||||||
updateObj.setStatus(status);
|
updateObj.setStatus(status);
|
||||||
userMapper.updateById(updateObj);
|
userMapper.updateById(updateObj);
|
||||||
// 删除用户关联数据
|
|
||||||
permissionService.processUserDeleted(id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -152,6 +139,8 @@ public class SysUserServiceImpl implements SysUserService {
|
||||||
this.checkUserExists(id);
|
this.checkUserExists(id);
|
||||||
// 删除用户
|
// 删除用户
|
||||||
userMapper.deleteById(id);
|
userMapper.deleteById(id);
|
||||||
|
// 删除用户关联数据
|
||||||
|
permissionService.processUserDeleted(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -227,7 +216,7 @@ public class SysUserServiceImpl implements SysUserService {
|
||||||
}
|
}
|
||||||
SysUserDO user = userMapper.selectById(id);
|
SysUserDO user = userMapper.selectById(id);
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
throw ServiceExceptionUtil.exception(USER_NOT_EXISTS);
|
throw exception(USER_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,10 +230,10 @@ public class SysUserServiceImpl implements SysUserService {
|
||||||
}
|
}
|
||||||
// 如果 id 为空,说明不用比较是否为相同 id 的用户
|
// 如果 id 为空,说明不用比较是否为相同 id 的用户
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
throw ServiceExceptionUtil.exception(USER_USERNAME_EXISTS);
|
throw exception(USER_USERNAME_EXISTS);
|
||||||
}
|
}
|
||||||
if (!user.getId().equals(id)) {
|
if (!user.getId().equals(id)) {
|
||||||
throw ServiceExceptionUtil.exception(USER_USERNAME_EXISTS);
|
throw exception(USER_USERNAME_EXISTS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,10 +247,10 @@ public class SysUserServiceImpl implements SysUserService {
|
||||||
}
|
}
|
||||||
// 如果 id 为空,说明不用比较是否为相同 id 的用户
|
// 如果 id 为空,说明不用比较是否为相同 id 的用户
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
throw ServiceExceptionUtil.exception(USER_EMAIL_EXISTS);
|
throw exception(USER_EMAIL_EXISTS);
|
||||||
}
|
}
|
||||||
if (!user.getId().equals(id)) {
|
if (!user.getId().equals(id)) {
|
||||||
throw ServiceExceptionUtil.exception(USER_EMAIL_EXISTS);
|
throw exception(USER_EMAIL_EXISTS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,10 +264,10 @@ public class SysUserServiceImpl implements SysUserService {
|
||||||
}
|
}
|
||||||
// 如果 id 为空,说明不用比较是否为相同 id 的用户
|
// 如果 id 为空,说明不用比较是否为相同 id 的用户
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
throw ServiceExceptionUtil.exception(USER_MOBILE_EXISTS);
|
throw exception(USER_MOBILE_EXISTS);
|
||||||
}
|
}
|
||||||
if (!user.getId().equals(id)) {
|
if (!user.getId().equals(id)) {
|
||||||
throw ServiceExceptionUtil.exception(USER_MOBILE_EXISTS);
|
throw exception(USER_MOBILE_EXISTS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,10 +277,10 @@ public class SysUserServiceImpl implements SysUserService {
|
||||||
}
|
}
|
||||||
SysDeptDO dept = deptService.getDept(deptId);
|
SysDeptDO dept = deptService.getDept(deptId);
|
||||||
if (dept == null) {
|
if (dept == null) {
|
||||||
throw ServiceExceptionUtil.exception(DEPT_NOT_FOUND);
|
throw exception(DEPT_NOT_FOUND);
|
||||||
}
|
}
|
||||||
if (!CommonStatusEnum.ENABLE.getStatus().equals(dept.getStatus())) {
|
if (!CommonStatusEnum.ENABLE.getStatus().equals(dept.getStatus())) {
|
||||||
throw ServiceExceptionUtil.exception(DEPT_NOT_ENABLE);
|
throw exception(DEPT_NOT_ENABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,16 +290,16 @@ public class SysUserServiceImpl implements SysUserService {
|
||||||
}
|
}
|
||||||
List<SysPostDO> posts = postService.getPosts(postIds, null);
|
List<SysPostDO> posts = postService.getPosts(postIds, null);
|
||||||
if (CollUtil.isEmpty(posts)) {
|
if (CollUtil.isEmpty(posts)) {
|
||||||
throw ServiceExceptionUtil.exception(POST_NOT_FOUND);
|
throw exception(POST_NOT_FOUND);
|
||||||
}
|
}
|
||||||
Map<Long, SysPostDO> postMap = CollectionUtils.convertMap(posts, SysPostDO::getId);
|
Map<Long, SysPostDO> postMap = CollectionUtils.convertMap(posts, SysPostDO::getId);
|
||||||
postIds.forEach(postId -> {
|
postIds.forEach(postId -> {
|
||||||
SysPostDO post = postMap.get(postId);
|
SysPostDO post = postMap.get(postId);
|
||||||
if (post == null) {
|
if (post == null) {
|
||||||
throw ServiceExceptionUtil.exception(POST_NOT_FOUND);
|
throw exception(POST_NOT_FOUND);
|
||||||
}
|
}
|
||||||
if (!CommonStatusEnum.ENABLE.getStatus().equals(post.getStatus())) {
|
if (!CommonStatusEnum.ENABLE.getStatus().equals(post.getStatus())) {
|
||||||
throw ServiceExceptionUtil.exception(POST_NOT_ENABLE, post.getName());
|
throw exception(POST_NOT_ENABLE, post.getName());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -324,10 +313,10 @@ public class SysUserServiceImpl implements SysUserService {
|
||||||
private void checkOldPassword(Long id, String oldPassword) {
|
private void checkOldPassword(Long id, String oldPassword) {
|
||||||
SysUserDO user = userMapper.selectById(id);
|
SysUserDO user = userMapper.selectById(id);
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
throw ServiceExceptionUtil.exception(USER_NOT_EXISTS);
|
throw exception(USER_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
if (!passwordEncoder.matches(oldPassword, user.getPassword())) {
|
if (!passwordEncoder.matches(oldPassword, user.getPassword())) {
|
||||||
throw ServiceExceptionUtil.exception(USER_PASSWORD_FAILED);
|
throw exception(USER_PASSWORD_FAILED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -335,7 +324,7 @@ public class SysUserServiceImpl implements SysUserService {
|
||||||
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
|
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
|
||||||
public SysUserImportRespVO importUsers(List<SysUserImportExcelVO> importUsers, boolean isUpdateSupport) {
|
public SysUserImportRespVO importUsers(List<SysUserImportExcelVO> importUsers, boolean isUpdateSupport) {
|
||||||
if (CollUtil.isEmpty(importUsers)) {
|
if (CollUtil.isEmpty(importUsers)) {
|
||||||
throw ServiceExceptionUtil.exception(USER_IMPORT_LIST_IS_EMPTY);
|
throw exception(USER_IMPORT_LIST_IS_EMPTY);
|
||||||
}
|
}
|
||||||
SysUserImportRespVO respVO = SysUserImportRespVO.builder().createUsernames(new ArrayList<>())
|
SysUserImportRespVO respVO = SysUserImportRespVO.builder().createUsernames(new ArrayList<>())
|
||||||
.updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build();
|
.updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build();
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package cn.iocoder.dashboard.modules.system.service.auth;
|
package cn.iocoder.dashboard.modules.system.service.auth;
|
||||||
|
|
||||||
import static cn.hutool.core.util.RandomUtil.randomEle;
|
import static cn.hutool.core.util.RandomUtil.randomEle;
|
||||||
import static cn.iocoder.dashboard.modules.system.dal.redis.SysRedisKeyConstants.LOGIN_USER;
|
|
||||||
import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
|
import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
|
||||||
import static cn.iocoder.dashboard.util.RandomUtils.randomDate;
|
import static cn.iocoder.dashboard.util.RandomUtils.randomDate;
|
||||||
import static cn.iocoder.dashboard.util.RandomUtils.randomLongId;
|
import static cn.iocoder.dashboard.util.RandomUtils.randomLongId;
|
||||||
|
@ -25,7 +24,6 @@ import javax.annotation.Resource;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.iocoder.dashboard.BaseDbAndRedisUnitTest;
|
import cn.iocoder.dashboard.BaseDbAndRedisUnitTest;
|
||||||
|
@ -33,10 +31,6 @@ import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
|
||||||
import cn.iocoder.dashboard.common.pojo.PageResult;
|
import cn.iocoder.dashboard.common.pojo.PageResult;
|
||||||
import cn.iocoder.dashboard.framework.security.config.SecurityProperties;
|
import cn.iocoder.dashboard.framework.security.config.SecurityProperties;
|
||||||
import cn.iocoder.dashboard.framework.security.core.LoginUser;
|
import cn.iocoder.dashboard.framework.security.core.LoginUser;
|
||||||
import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobPageReqVO;
|
|
||||||
import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO;
|
|
||||||
import cn.iocoder.dashboard.modules.infra.enums.config.InfConfigTypeEnum;
|
|
||||||
import cn.iocoder.dashboard.modules.infra.enums.job.InfJobStatusEnum;
|
|
||||||
import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
|
import cn.iocoder.dashboard.modules.system.controller.auth.vo.session.SysUserSessionPageReqVO;
|
||||||
import cn.iocoder.dashboard.modules.system.dal.dataobject.auth.SysUserSessionDO;
|
import cn.iocoder.dashboard.modules.system.dal.dataobject.auth.SysUserSessionDO;
|
||||||
import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
|
import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
|
||||||
|
@ -50,7 +44,6 @@ import cn.iocoder.dashboard.modules.system.service.logger.impl.SysLoginLogServic
|
||||||
import cn.iocoder.dashboard.modules.system.service.user.SysUserServiceImpl;
|
import cn.iocoder.dashboard.modules.system.service.user.SysUserServiceImpl;
|
||||||
import cn.iocoder.dashboard.util.AssertUtils;
|
import cn.iocoder.dashboard.util.AssertUtils;
|
||||||
import cn.iocoder.dashboard.util.RandomUtils;
|
import cn.iocoder.dashboard.util.RandomUtils;
|
||||||
import cn.iocoder.dashboard.util.json.JsonUtils;
|
|
||||||
import cn.iocoder.dashboard.util.object.ObjectUtils;
|
import cn.iocoder.dashboard.util.object.ObjectUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -167,12 +160,12 @@ public class SysUserSessionServiceImplTest extends BaseDbAndRedisUnitTest {
|
||||||
String userIp = randomString();
|
String userIp = randomString();
|
||||||
SysUserDO dbUser1 = randomPojo(SysUserDO.class, o -> {
|
SysUserDO dbUser1 = randomPojo(SysUserDO.class, o -> {
|
||||||
o.setUsername("testUsername1");
|
o.setUsername("testUsername1");
|
||||||
o.setSex(randomEle(SysSexEnum.values()).getSEX());
|
o.setSex(randomEle(SysSexEnum.values()).getSex());
|
||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
});
|
});
|
||||||
SysUserDO dbUser2 = randomPojo(SysUserDO.class, o -> {
|
SysUserDO dbUser2 = randomPojo(SysUserDO.class, o -> {
|
||||||
o.setUsername("testUsername2");
|
o.setUsername("testUsername2");
|
||||||
o.setSex(randomEle(SysSexEnum.values()).getSEX());
|
o.setSex(randomEle(SysSexEnum.values()).getSex());
|
||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
});
|
});
|
||||||
SysUserSessionDO dbSession = randomPojo(SysUserSessionDO.class, o -> {
|
SysUserSessionDO dbSession = randomPojo(SysUserSessionDO.class, o -> {
|
||||||
|
|
|
@ -68,7 +68,7 @@ public class SysOperateLogServiceImplTest extends BaseDbUnitTest {
|
||||||
// 先构造用户
|
// 先构造用户
|
||||||
SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> {
|
SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> {
|
||||||
o.setNickname("wangkai");
|
o.setNickname("wangkai");
|
||||||
o.setSex(SysSexEnum.MALE.getSEX());
|
o.setSex(SysSexEnum.MALE.getSex());
|
||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
});
|
});
|
||||||
when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user));
|
when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user));
|
||||||
|
@ -119,7 +119,7 @@ public class SysOperateLogServiceImplTest extends BaseDbUnitTest {
|
||||||
// 先构造用户
|
// 先构造用户
|
||||||
SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> {
|
SysUserDO user = RandomUtils.randomPojo(SysUserDO.class, o -> {
|
||||||
o.setNickname("wangkai");
|
o.setNickname("wangkai");
|
||||||
o.setSex(SysSexEnum.MALE.getSEX());
|
o.setSex(SysSexEnum.MALE.getSex());
|
||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
});
|
});
|
||||||
when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user));
|
when(userService.getUsersByNickname("wangkai")).thenReturn(Collections.singletonList(user));
|
||||||
|
|
|
@ -56,7 +56,7 @@ public class SysSmsChannelServiceTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testInitLocalCache_success() {
|
public void testInitLocalCache_success() {
|
||||||
// mock 数据s
|
// mock 数据
|
||||||
SysSmsChannelDO smsChannelDO01 = randomSmsChannelDO();
|
SysSmsChannelDO smsChannelDO01 = randomSmsChannelDO();
|
||||||
smsChannelMapper.insert(smsChannelDO01);
|
smsChannelMapper.insert(smsChannelDO01);
|
||||||
SysSmsChannelDO smsChannelDO02 = randomSmsChannelDO();
|
SysSmsChannelDO smsChannelDO02 = randomSmsChannelDO();
|
||||||
|
|
|
@ -1,128 +1,259 @@
|
||||||
package cn.iocoder.dashboard.modules.system.service.user;
|
package cn.iocoder.dashboard.modules.system.service.user;
|
||||||
|
|
||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
import cn.iocoder.dashboard.BaseSpringBootUnitTest;
|
import cn.iocoder.dashboard.BaseDbUnitTest;
|
||||||
import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
|
import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
|
||||||
|
import cn.iocoder.dashboard.modules.infra.service.file.InfFileService;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdatePasswordReqVO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.controller.user.vo.profile.SysUserProfileUpdateReqVO;
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserCreateReqVO;
|
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserCreateReqVO;
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportExcelVO;
|
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportExcelVO;
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportRespVO;
|
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserImportRespVO;
|
||||||
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserUpdateReqVO;
|
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.SysUserUpdateReqVO;
|
||||||
import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO;
|
import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysDeptDO;
|
||||||
import cn.iocoder.dashboard.modules.system.dal.mysql.dept.SysDeptMapper;
|
import cn.iocoder.dashboard.modules.system.dal.dataobject.dept.SysPostDO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
|
||||||
|
import cn.iocoder.dashboard.modules.system.dal.mysql.user.SysUserMapper;
|
||||||
|
import cn.iocoder.dashboard.modules.system.enums.common.SysSexEnum;
|
||||||
import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService;
|
import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService;
|
||||||
import cn.iocoder.dashboard.util.RandomUtils;
|
import cn.iocoder.dashboard.modules.system.service.dept.SysPostService;
|
||||||
|
import cn.iocoder.dashboard.modules.system.service.permission.SysPermissionService;
|
||||||
|
import cn.iocoder.dashboard.util.collection.ArrayUtils;
|
||||||
|
import cn.iocoder.dashboard.util.collection.CollectionUtils;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.mockito.stubbing.Answer;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import static cn.iocoder.dashboard.util.RandomUtils.randomPojo;
|
import static cn.hutool.core.util.RandomUtil.randomBytes;
|
||||||
import static cn.iocoder.dashboard.util.RandomUtils.randomString;
|
import static cn.hutool.core.util.RandomUtil.randomEle;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
|
||||||
|
import static cn.iocoder.dashboard.util.RandomUtils.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
|
import static org.mockito.ArgumentMatchers.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author zxl
|
* {@link SysUserService} 的单元测试类
|
||||||
* @Date 2021/3/6 14:28
|
*
|
||||||
* @Desc
|
* @author zxl
|
||||||
*/
|
*/
|
||||||
@Import(PasswordEncoder.class)
|
@Import(SysUserServiceImpl.class)
|
||||||
public class SysUserServiceImplTest extends BaseSpringBootUnitTest {
|
public class SysUserServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private SysUserService userService;
|
|
||||||
@Autowired
|
|
||||||
private PasswordEncoder passwordEncoder;
|
|
||||||
@Autowired
|
|
||||||
private SysDeptService deptService;
|
|
||||||
@Resource
|
@Resource
|
||||||
private SysDeptMapper deptMapper;
|
private SysUserServiceImpl userService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysUserMapper userMapper;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private SysDeptService deptService;
|
||||||
|
@MockBean
|
||||||
|
private SysPostService postService;
|
||||||
|
@MockBean
|
||||||
|
private SysPermissionService permissionService;
|
||||||
|
@MockBean
|
||||||
|
private PasswordEncoder passwordEncoder;
|
||||||
|
@MockBean
|
||||||
|
private InfFileService fileService;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_creatUser(){
|
public void testCreatUser_success() {
|
||||||
// 准备参数
|
// 准备参数
|
||||||
SysUserCreateReqVO reqVO = randomPojo(SysUserCreateReqVO.class,o->{
|
SysUserCreateReqVO reqVO = randomPojo(SysUserCreateReqVO.class, o -> {
|
||||||
o.setDeptId(null);
|
o.setSex(RandomUtil.randomEle(SysSexEnum.values()).getSex());
|
||||||
o.setPostIds(Collections.emptySet());
|
o.setMobile(randomString());
|
||||||
o.setSex(1);
|
|
||||||
o.setPassword(randomString());
|
|
||||||
});
|
});
|
||||||
// 调用方法
|
// mock deptService 的方法
|
||||||
Long userId = userService.createUser(reqVO);
|
SysDeptDO dept = randomPojo(SysDeptDO.class, o -> {
|
||||||
// 校验数据是否存在
|
o.setId(reqVO.getDeptId());
|
||||||
assertNotNull(userService.getUser(userId));
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
|
});
|
||||||
|
when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
|
||||||
|
// mock postService 的方法
|
||||||
|
List<SysPostDO> posts = CollectionUtils.convertList(reqVO.getPostIds(), postId ->
|
||||||
|
randomPojo(SysPostDO.class, o -> {
|
||||||
|
o.setId(postId);
|
||||||
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
|
}));
|
||||||
|
when(postService.getPosts(eq(reqVO.getPostIds()), isNull())).thenReturn(posts);
|
||||||
|
// mock passwordEncoder 的方法
|
||||||
|
when(passwordEncoder.encode(eq(reqVO.getPassword()))).thenReturn("yudaoyuanma");
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
Long userId = userService.createUser(reqVO);
|
||||||
|
// 断言
|
||||||
|
SysUserDO user = userMapper.selectById(userId);
|
||||||
|
assertPojoEquals(reqVO, user, "password");
|
||||||
|
assertEquals("yudaoyuanma", user.getPassword());
|
||||||
|
assertEquals(CommonStatusEnum.ENABLE.getStatus(), user.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_updateUser(){
|
public void testUpdateUser_success() {
|
||||||
|
// mock 数据
|
||||||
|
SysUserDO dbUser = randomSysUserDO();
|
||||||
|
userMapper.insert(dbUser);
|
||||||
// 准备参数
|
// 准备参数
|
||||||
SysUserCreateReqVO reqVO = randomPojo(SysUserCreateReqVO.class,o->{
|
SysUserUpdateReqVO reqVO = randomPojo(SysUserUpdateReqVO.class, o -> {
|
||||||
o.setDeptId(null);
|
o.setId(dbUser.getId());
|
||||||
o.setPostIds(Collections.emptySet());
|
o.setSex(RandomUtil.randomEle(SysSexEnum.values()).getSex());
|
||||||
o.setSex(1);
|
o.setMobile(randomString());
|
||||||
o.setPassword(randomString());
|
|
||||||
});
|
});
|
||||||
// 先插入一条
|
// mock deptService 的方法
|
||||||
Long userId = userService.createUser(reqVO);
|
SysDeptDO dept = randomPojo(SysDeptDO.class, o -> {
|
||||||
// 准备更新参数:更新手机号
|
o.setId(reqVO.getDeptId());
|
||||||
SysUserUpdateReqVO updateVo = new SysUserUpdateReqVO();
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
updateVo.setId(userId);
|
});
|
||||||
updateVo.setMobile(RandomUtil.randomNumbers(11));
|
when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
|
||||||
// 调用方法、
|
// mock postService 的方法
|
||||||
userService.updateUser(updateVo);
|
List<SysPostDO> posts = CollectionUtils.convertList(reqVO.getPostIds(), postId ->
|
||||||
// 校验结果
|
randomPojo(SysPostDO.class, o -> {
|
||||||
assertEquals(userService.getUser(userId).getMobile(),updateVo.getMobile());
|
o.setId(postId);
|
||||||
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
|
}));
|
||||||
|
when(postService.getPosts(eq(reqVO.getPostIds()), isNull())).thenReturn(posts);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
userService.updateUser(reqVO);
|
||||||
|
// 断言
|
||||||
|
SysUserDO user = userMapper.selectById(reqVO.getId());
|
||||||
|
assertPojoEquals(reqVO, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_deleteUser(){
|
public void testUpdateUserProfile_success() {
|
||||||
|
// mock 数据
|
||||||
|
SysUserDO dbUser = randomSysUserDO();
|
||||||
|
userMapper.insert(dbUser);
|
||||||
// 准备参数
|
// 准备参数
|
||||||
SysUserCreateReqVO reqVO = randomPojo(SysUserCreateReqVO.class,o->{
|
Long userId = dbUser.getId();
|
||||||
o.setDeptId(null);
|
SysUserProfileUpdateReqVO reqVO = randomPojo(SysUserProfileUpdateReqVO.class, o -> {
|
||||||
o.setPostIds(Collections.emptySet());
|
o.setMobile(randomString());
|
||||||
o.setSex(1);
|
o.setSex(RandomUtil.randomEle(SysSexEnum.values()).getSex());
|
||||||
o.setPassword(randomString());
|
|
||||||
});
|
});
|
||||||
// 先插入一条
|
|
||||||
Long userId = userService.createUser(reqVO);
|
// 调用
|
||||||
|
userService.updateUserProfile(userId, reqVO);
|
||||||
|
// 断言
|
||||||
|
SysUserDO user = userMapper.selectById(userId);
|
||||||
|
assertPojoEquals(reqVO, user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateUserPassword_success() {
|
||||||
|
// mock 数据
|
||||||
|
SysUserDO dbUser = randomSysUserDO(o -> o.setPassword("encode:yudao"));
|
||||||
|
userMapper.insert(dbUser);
|
||||||
|
// 准备参数
|
||||||
|
Long userId = dbUser.getId();
|
||||||
|
SysUserProfileUpdatePasswordReqVO reqVO = randomPojo(SysUserProfileUpdatePasswordReqVO.class, o -> {
|
||||||
|
o.setOldPassword("yudao");
|
||||||
|
o.setNewPassword("yuanma");
|
||||||
|
});
|
||||||
|
// mock 方法
|
||||||
|
when(passwordEncoder.encode(anyString())).then(
|
||||||
|
(Answer<String>) invocationOnMock -> "encode:" + invocationOnMock.getArgument(0));
|
||||||
|
when(passwordEncoder.matches(eq(reqVO.getOldPassword()), eq(dbUser.getPassword()))).thenReturn(true);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
userService.updateUserPassword(userId, reqVO);
|
||||||
|
// 断言
|
||||||
|
SysUserDO user = userMapper.selectById(userId);
|
||||||
|
assertEquals("encode:yuanma", user.getPassword());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateUserAvatar_success() {
|
||||||
|
// mock 数据
|
||||||
|
SysUserDO dbUser = randomSysUserDO();
|
||||||
|
userMapper.insert(dbUser);
|
||||||
|
// 准备参数
|
||||||
|
Long userId = dbUser.getId();
|
||||||
|
byte[] avatarFileBytes = randomBytes(10);
|
||||||
|
ByteArrayInputStream avatarFile = new ByteArrayInputStream(avatarFileBytes);
|
||||||
|
// mock 方法
|
||||||
|
String avatar = randomString();
|
||||||
|
when(fileService.createFile(anyString(), eq(avatarFileBytes))).thenReturn(avatar);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
userService.updateUserAvatar(userId, avatarFile);
|
||||||
|
// 断言
|
||||||
|
SysUserDO user = userMapper.selectById(userId);
|
||||||
|
assertEquals(avatar, user.getAvatar());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateUserPassword02_success() {
|
||||||
|
// mock 数据
|
||||||
|
SysUserDO dbUser = randomSysUserDO();
|
||||||
|
userMapper.insert(dbUser);
|
||||||
|
// 准备参数
|
||||||
|
Long userId = dbUser.getId();
|
||||||
|
String password = "yudao";
|
||||||
|
// mock 方法
|
||||||
|
when(passwordEncoder.encode(anyString())).then(
|
||||||
|
(Answer<String>) invocationOnMock -> "encode:" + invocationOnMock.getArgument(0));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
userService.updateUserPassword(userId, password);
|
||||||
|
// 断言
|
||||||
|
SysUserDO user = userMapper.selectById(userId);
|
||||||
|
assertEquals("encode:" + password, user.getPassword());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateUserStatus() {
|
||||||
|
// mock 数据
|
||||||
|
SysUserDO dbUser = randomSysUserDO();
|
||||||
|
userMapper.insert(dbUser);
|
||||||
|
// 准备参数
|
||||||
|
Long userId = dbUser.getId();
|
||||||
|
Integer status = randomCommonStatus();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
userService.updateUserStatus(userId, status);
|
||||||
|
// 断言
|
||||||
|
SysUserDO user = userMapper.selectById(userId);
|
||||||
|
assertEquals(status, user.getStatus());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteUser(){
|
||||||
|
// mock 数据
|
||||||
|
SysUserDO dbUser = randomSysUserDO();
|
||||||
|
userMapper.insert(dbUser);
|
||||||
|
// 准备参数
|
||||||
|
Long userId = dbUser.getId();
|
||||||
|
|
||||||
// 调用数据
|
// 调用数据
|
||||||
userService.deleteUser(userId);
|
userService.deleteUser(userId);
|
||||||
// 校验结果
|
// 校验结果
|
||||||
assertNull(userService.getUser(userId));
|
assertNull(userService.getUser(userId));
|
||||||
|
// 校验调用次数
|
||||||
|
verify(permissionService, times(1)).processUserDeleted(eq(userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void test_updateUserPassword(){
|
|
||||||
// 准备参数
|
|
||||||
SysUserCreateReqVO reqVO = randomPojo(SysUserCreateReqVO.class,o->{
|
|
||||||
o.setDeptId(null);
|
|
||||||
o.setPostIds(Collections.emptySet());
|
|
||||||
o.setSex(1);
|
|
||||||
o.setPassword("123");
|
|
||||||
});
|
|
||||||
// 先插入一条
|
|
||||||
Long userId = userService.createUser(reqVO);
|
|
||||||
String newPassword = RandomUtils.randomString();
|
|
||||||
// 调用
|
|
||||||
userService.updateUserPassword(userId,newPassword);
|
|
||||||
// 校验结果
|
|
||||||
assertNotEquals(passwordEncoder.encode(newPassword),userService.getUser(userId).getPassword());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_importUsers(){
|
public void test_importUsers(){
|
||||||
SysDeptDO dept = randomPojo(SysDeptDO.class, o -> { // 等会查询到
|
SysDeptDO dept = randomPojo(SysDeptDO.class, o -> { // 等会查询到
|
||||||
o.setName("开发部");
|
o.setName("开发部");
|
||||||
o.setSort("1");
|
o.setSort(1);
|
||||||
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
o.setStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||||
});
|
});
|
||||||
int depId = deptMapper.insert(dept);
|
// int depId = deptMapper.insert(dept);
|
||||||
|
int depId = 0;
|
||||||
// 准备参数
|
// 准备参数
|
||||||
List<SysUserImportExcelVO> list = new ArrayList<>();
|
List<SysUserImportExcelVO> list = new ArrayList<>();
|
||||||
list.add(randomPojo(SysUserImportExcelVO.class, o->{
|
list.add(randomPojo(SysUserImportExcelVO.class, o->{
|
||||||
|
@ -153,18 +284,15 @@ public class SysUserServiceImplTest extends BaseSpringBootUnitTest {
|
||||||
assertEquals(respVOUpdate.getUpdateUsernames().size(),3);
|
assertEquals(respVOUpdate.getUpdateUsernames().size(),3);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SysUserCreateReqVO randomUserVO(){
|
// ========== 随机对象 ==========
|
||||||
|
|
||||||
SysUserCreateReqVO userVO = new SysUserCreateReqVO();
|
|
||||||
userVO.setUsername(RandomUtils.randomString());
|
|
||||||
userVO.setNickname(RandomUtils.randomString());
|
|
||||||
userVO.setMobile(RandomUtil.randomNumbers(11));
|
|
||||||
userVO.setEmail(RandomUtils.randomString()+"@ruoyi.com");
|
|
||||||
userVO.setDeptId(null);
|
|
||||||
userVO.setPostIds(Collections.emptySet());
|
|
||||||
|
|
||||||
userVO.setPassword(RandomUtils.randomString());
|
|
||||||
return userVO;
|
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
|
private static SysUserDO randomSysUserDO(Consumer<SysUserDO>... consumers) {
|
||||||
|
Consumer<SysUserDO> consumer = (o) -> {
|
||||||
|
o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围
|
||||||
|
o.setSex(randomEle(SysSexEnum.values()).getSex()); // 保证 sex 的范围
|
||||||
|
};
|
||||||
|
return randomPojo(SysUserDO.class, ArrayUtils.append(consumer, consumers));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue