mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	完善 LoginLogServiceImplTest 单元测试
This commit is contained in:
		@@ -47,7 +47,7 @@ public class RandomUtils {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            // 如果是 type、status 结尾的字段,返回 tinyint 范围
 | 
					            // 如果是 type、status 结尾的字段,返回 tinyint 范围
 | 
				
			||||||
            if (StrUtil.endWithAnyIgnoreCase(attributeMetadata.getAttributeName(),
 | 
					            if (StrUtil.endWithAnyIgnoreCase(attributeMetadata.getAttributeName(),
 | 
				
			||||||
                    "type", "status", "category", "scope")) {
 | 
					                    "type", "status", "category", "scope", "result")) {
 | 
				
			||||||
                return RandomUtil.randomInt(0, TINYINT_MAX + 1);
 | 
					                return RandomUtil.randomInt(0, TINYINT_MAX + 1);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return RandomUtil.randomInt();
 | 
					            return RandomUtil.randomInt();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,29 +1,25 @@
 | 
				
			|||||||
package cn.iocoder.yudao.module.system.service.logger;
 | 
					package cn.iocoder.yudao.module.system.service.logger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.hutool.core.util.RandomUtil;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
					import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
				
			||||||
import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
 | 
					import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
 | 
				
			||||||
import cn.iocoder.yudao.framework.test.core.util.RandomUtils;
 | 
					 | 
				
			||||||
import cn.iocoder.yudao.module.system.api.logger.dto.LoginLogCreateReqDTO;
 | 
					import cn.iocoder.yudao.module.system.api.logger.dto.LoginLogCreateReqDTO;
 | 
				
			||||||
import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExportReqVO;
 | 
					import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExportReqVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogPageReqVO;
 | 
					import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogPageReqVO;
 | 
				
			||||||
import cn.iocoder.yudao.module.system.dal.dataobject.logger.LoginLogDO;
 | 
					import cn.iocoder.yudao.module.system.dal.dataobject.logger.LoginLogDO;
 | 
				
			||||||
import cn.iocoder.yudao.module.system.dal.mysql.logger.LoginLogMapper;
 | 
					import cn.iocoder.yudao.module.system.dal.mysql.logger.LoginLogMapper;
 | 
				
			||||||
import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum;
 | 
					 | 
				
			||||||
import org.junit.jupiter.api.Test;
 | 
					import org.junit.jupiter.api.Test;
 | 
				
			||||||
import org.springframework.context.annotation.Import;
 | 
					import org.springframework.context.annotation.Import;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Resource;
 | 
					import javax.annotation.Resource;
 | 
				
			||||||
import java.time.LocalDateTime;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static cn.hutool.core.util.RandomUtil.randomEle;
 | 
					import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
 | 
				
			||||||
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
 | 
					import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
 | 
				
			||||||
 | 
					import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
 | 
				
			||||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
 | 
					import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
 | 
				
			||||||
import static cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum.*;
 | 
					import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
 | 
				
			||||||
 | 
					import static cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum.CAPTCHA_CODE_ERROR;
 | 
				
			||||||
 | 
					import static cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum.SUCCESS;
 | 
				
			||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
					import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Import(LoginLogServiceImpl.class)
 | 
					@Import(LoginLogServiceImpl.class)
 | 
				
			||||||
@@ -37,42 +33,31 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testGetLoginLogPage() {
 | 
					    public void testGetLoginLogPage() {
 | 
				
			||||||
        // 构造测试数据
 | 
					        // mock 数据
 | 
				
			||||||
        // 登录成功的
 | 
					        LoginLogDO loginLogDO = randomPojo(LoginLogDO.class, o -> {
 | 
				
			||||||
        LoginLogDO loginLogDO = RandomUtils.randomPojo(LoginLogDO.class, logDO -> {
 | 
					            o.setUserIp("192.168.199.16");
 | 
				
			||||||
            logDO.setLogType(RandomUtil.randomEle(cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum.values()).getType());
 | 
					            o.setUsername("wang");
 | 
				
			||||||
            logDO.setTraceId(TracerUtils.getTraceId());
 | 
					            o.setResult(SUCCESS.getResult());
 | 
				
			||||||
            logDO.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue());
 | 
					            o.setCreateTime(buildTime(2021, 3, 6));
 | 
				
			||||||
 | 
					 | 
				
			||||||
            logDO.setUserIp("192.168.199.16");
 | 
					 | 
				
			||||||
            logDO.setUsername("wangkai");
 | 
					 | 
				
			||||||
            logDO.setCreateTime(buildTime(2021, 3, 6));
 | 
					 | 
				
			||||||
            logDO.setResult(SUCCESS.getResult());
 | 
					 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        loginLogMapper.insert(loginLogDO);
 | 
					        loginLogMapper.insert(loginLogDO);
 | 
				
			||||||
 | 
					        // 测试 status 不匹配
 | 
				
			||||||
        // 下面几个都是不匹配的数据
 | 
					        loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setResult(CAPTCHA_CODE_ERROR.getResult())));
 | 
				
			||||||
        // 登录失败的
 | 
					        // 测试 ip 不匹配
 | 
				
			||||||
        loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setResult(CAPTCHA_CODE_ERROR.getResult())));
 | 
					        loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUserIp("192.168.128.18")));
 | 
				
			||||||
        // 不同ip段的
 | 
					        // 测试 username 不匹配
 | 
				
			||||||
        loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18")));
 | 
					        loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUsername("yunai")));
 | 
				
			||||||
        // 不同username
 | 
					        // 测试 createTime 不匹配
 | 
				
			||||||
        loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUsername("yunai")));
 | 
					        loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setCreateTime(buildTime(2021, 2, 6))));
 | 
				
			||||||
        // 构造一个早期时间 2021-02-06 00:00:00
 | 
					 | 
				
			||||||
        loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6))));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 构造调用参数
 | 
					        // 构造调用参数
 | 
				
			||||||
        LoginLogPageReqVO reqVO = new LoginLogPageReqVO();
 | 
					        LoginLogPageReqVO reqVO = new LoginLogPageReqVO();
 | 
				
			||||||
        reqVO.setUsername("wangkai");
 | 
					        reqVO.setUsername("wang");
 | 
				
			||||||
        reqVO.setUserIp("192.168.199");
 | 
					        reqVO.setUserIp("192.168.199");
 | 
				
			||||||
        reqVO.setStatus(true);
 | 
					        reqVO.setStatus(true);
 | 
				
			||||||
        reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 3, 5),
 | 
					        reqVO.setCreateTime(buildBetweenTime(2021, 3, 5, 2021, 3, 7));
 | 
				
			||||||
                buildTime(2021, 3, 7)}));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 调用service方法
 | 
					        // 调用
 | 
				
			||||||
        PageResult<LoginLogDO> pageResult = loginLogService.getLoginLogPage(reqVO);
 | 
					        PageResult<LoginLogDO> pageResult = loginLogService.getLoginLogPage(reqVO);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 断言,只查到了一条符合条件的
 | 
					        // 断言,只查到了一条符合条件的
 | 
				
			||||||
        assertEquals(1, pageResult.getTotal());
 | 
					        assertEquals(1, pageResult.getTotal());
 | 
				
			||||||
        assertEquals(1, pageResult.getList().size());
 | 
					        assertEquals(1, pageResult.getList().size());
 | 
				
			||||||
@@ -81,62 +66,45 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testGetLoginLogList() {
 | 
					    public void testGetLoginLogList() {
 | 
				
			||||||
        // 构造测试数据
 | 
					        // mock 数据
 | 
				
			||||||
 | 
					        LoginLogDO loginLogDO = randomPojo(LoginLogDO.class, o -> {
 | 
				
			||||||
        // 登录成功的
 | 
					            o.setUserIp("192.168.199.16");
 | 
				
			||||||
        LoginLogDO loginLogDO = RandomUtils.randomPojo(LoginLogDO.class, logDO -> {
 | 
					            o.setUsername("wang");
 | 
				
			||||||
            logDO.setLogType(RandomUtil.randomEle(cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum.values()).getType());
 | 
					            o.setResult(SUCCESS.getResult());
 | 
				
			||||||
            logDO.setTraceId(TracerUtils.getTraceId());
 | 
					            o.setCreateTime(buildTime(2021, 3, 6));
 | 
				
			||||||
            logDO.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            logDO.setUserIp("192.168.111.16");
 | 
					 | 
				
			||||||
            logDO.setUsername("wangxiaokai");
 | 
					 | 
				
			||||||
            logDO.setCreateTime(buildTime(2021, 3, 6));
 | 
					 | 
				
			||||||
            logDO.setResult(SUCCESS.getResult());
 | 
					 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        loginLogMapper.insert(loginLogDO);
 | 
					        loginLogMapper.insert(loginLogDO);
 | 
				
			||||||
 | 
					        // 测试 status 不匹配
 | 
				
			||||||
        // 下面几个都是不匹配的数据
 | 
					        loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setResult(CAPTCHA_CODE_ERROR.getResult())));
 | 
				
			||||||
        // 登录失败的
 | 
					        // 测试 ip 不匹配
 | 
				
			||||||
        loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setResult(CAPTCHA_CODE_ERROR.getResult())));
 | 
					        loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUserIp("192.168.128.18")));
 | 
				
			||||||
        // 不同ip段的
 | 
					        // 测试 username 不匹配
 | 
				
			||||||
        loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18")));
 | 
					        loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUsername("yunai")));
 | 
				
			||||||
        // 不同username
 | 
					        // 测试 createTime 不匹配
 | 
				
			||||||
        loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUsername("yunai")));
 | 
					        loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setCreateTime(buildTime(2021, 2, 6))));
 | 
				
			||||||
        // 构造一个早期时间 2021-02-06 00:00:00
 | 
					 | 
				
			||||||
        loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6))));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 构造调用参数
 | 
					        // 构造调用参数
 | 
				
			||||||
        LoginLogExportReqVO reqVO = new LoginLogExportReqVO();
 | 
					        LoginLogExportReqVO reqVO = new LoginLogExportReqVO();
 | 
				
			||||||
        reqVO.setUsername("wangxiaokai");
 | 
					        reqVO.setUsername("wang");
 | 
				
			||||||
        reqVO.setUserIp("192.168.111");
 | 
					        reqVO.setUserIp("192.168.199");
 | 
				
			||||||
        reqVO.setStatus(true);
 | 
					        reqVO.setStatus(true);
 | 
				
			||||||
        reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 3, 5),
 | 
					        reqVO.setCreateTime(buildBetweenTime(2021, 3, 5, 2021, 3, 7));
 | 
				
			||||||
                buildTime(2021, 3, 7)}));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 调用service方法
 | 
					        // 调用service方法
 | 
				
			||||||
        List<LoginLogDO> loginLogList = loginLogService.getLoginLogList(reqVO);
 | 
					        List<LoginLogDO> list = loginLogService.getLoginLogList(reqVO);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 断言
 | 
					        // 断言
 | 
				
			||||||
        assertEquals(1, loginLogList.size());
 | 
					        assertEquals(1, list.size());
 | 
				
			||||||
        assertPojoEquals(loginLogDO, loginLogList.get(0));
 | 
					        assertPojoEquals(loginLogDO, list.get(0));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testCreateLoginLog() {
 | 
					    public void testCreateLoginLog() {
 | 
				
			||||||
        LoginLogCreateReqDTO reqDTO = RandomUtils.randomPojo(LoginLogCreateReqDTO.class, vo -> {
 | 
					        LoginLogCreateReqDTO reqDTO = randomPojo(LoginLogCreateReqDTO.class);
 | 
				
			||||||
            // 指定随机的范围,避免超出范围入库失败
 | 
					 | 
				
			||||||
            vo.setUserType(randomEle(UserTypeEnum.values()).getValue());
 | 
					 | 
				
			||||||
            vo.setLogType(randomEle(LoginLogTypeEnum.values()).getType());
 | 
					 | 
				
			||||||
            vo.setResult(randomEle(values()).getResult());
 | 
					 | 
				
			||||||
            vo.setTraceId(TracerUtils.getTraceId());
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 调用
 | 
					        // 调用
 | 
				
			||||||
        loginLogService.createLoginLog(reqDTO);
 | 
					        loginLogService.createLoginLog(reqDTO);
 | 
				
			||||||
        // 断言,忽略基本字段
 | 
					        // 断言
 | 
				
			||||||
        LoginLogDO sysLoginLogDO = loginLogMapper.selectOne(null);
 | 
					        LoginLogDO loginLogDO = loginLogMapper.selectOne(null);
 | 
				
			||||||
        assertPojoEquals(reqDTO, sysLoginLogDO);
 | 
					        assertPojoEquals(reqDTO, loginLogDO);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user