Commit 987fcd366c3f432acfd652a8d7d2dcbb9adb795c
1 parent
9ca79391
完善 LoginLogServiceImplTest 单元测试
Showing
2 changed files
with
47 additions
and
79 deletions
yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java
| ... | ... | @@ -47,7 +47,7 @@ public class RandomUtils { |
| 47 | 47 | } |
| 48 | 48 | // 如果是 type、status 结尾的字段,返回 tinyint 范围 |
| 49 | 49 | if (StrUtil.endWithAnyIgnoreCase(attributeMetadata.getAttributeName(), |
| 50 | - "type", "status", "category", "scope")) { | |
| 50 | + "type", "status", "category", "scope", "result")) { | |
| 51 | 51 | return RandomUtil.randomInt(0, TINYINT_MAX + 1); |
| 52 | 52 | } |
| 53 | 53 | return RandomUtil.randomInt(); | ... | ... |
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/logger/LoginLogServiceImplTest.java
| 1 | 1 | package cn.iocoder.yudao.module.system.service.logger; |
| 2 | 2 | |
| 3 | -import cn.hutool.core.util.RandomUtil; | |
| 4 | -import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | |
| 5 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | -import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; | |
| 7 | -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | |
| 8 | 4 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; |
| 9 | -import cn.iocoder.yudao.framework.test.core.util.RandomUtils; | |
| 10 | 5 | import cn.iocoder.yudao.module.system.api.logger.dto.LoginLogCreateReqDTO; |
| 11 | 6 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogExportReqVO; |
| 12 | 7 | import cn.iocoder.yudao.module.system.controller.admin.logger.vo.loginlog.LoginLogPageReqVO; |
| 13 | 8 | import cn.iocoder.yudao.module.system.dal.dataobject.logger.LoginLogDO; |
| 14 | 9 | import cn.iocoder.yudao.module.system.dal.mysql.logger.LoginLogMapper; |
| 15 | -import cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum; | |
| 16 | 10 | import org.junit.jupiter.api.Test; |
| 17 | 11 | import org.springframework.context.annotation.Import; |
| 18 | 12 | |
| 19 | 13 | import javax.annotation.Resource; |
| 20 | -import java.time.LocalDateTime; | |
| 21 | 14 | import java.util.List; |
| 22 | 15 | |
| 23 | -import static cn.hutool.core.util.RandomUtil.randomEle; | |
| 16 | +import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; | |
| 24 | 17 | import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime; |
| 18 | +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | |
| 25 | 19 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| 26 | -import static cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum.*; | |
| 20 | +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | |
| 21 | +import static cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum.CAPTCHA_CODE_ERROR; | |
| 22 | +import static cn.iocoder.yudao.module.system.enums.logger.LoginResultEnum.SUCCESS; | |
| 27 | 23 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 28 | 24 | |
| 29 | 25 | @Import(LoginLogServiceImpl.class) |
| ... | ... | @@ -37,42 +33,31 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest { |
| 37 | 33 | |
| 38 | 34 | @Test |
| 39 | 35 | public void testGetLoginLogPage() { |
| 40 | - // 构造测试数据 | |
| 41 | - // 登录成功的 | |
| 42 | - LoginLogDO loginLogDO = RandomUtils.randomPojo(LoginLogDO.class, logDO -> { | |
| 43 | - logDO.setLogType(RandomUtil.randomEle(cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum.values()).getType()); | |
| 44 | - logDO.setTraceId(TracerUtils.getTraceId()); | |
| 45 | - logDO.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue()); | |
| 46 | - | |
| 47 | - logDO.setUserIp("192.168.199.16"); | |
| 48 | - logDO.setUsername("wangkai"); | |
| 49 | - logDO.setCreateTime(buildTime(2021, 3, 6)); | |
| 50 | - logDO.setResult(SUCCESS.getResult()); | |
| 36 | + // mock 数据 | |
| 37 | + LoginLogDO loginLogDO = randomPojo(LoginLogDO.class, o -> { | |
| 38 | + o.setUserIp("192.168.199.16"); | |
| 39 | + o.setUsername("wang"); | |
| 40 | + o.setResult(SUCCESS.getResult()); | |
| 41 | + o.setCreateTime(buildTime(2021, 3, 6)); | |
| 51 | 42 | }); |
| 52 | 43 | loginLogMapper.insert(loginLogDO); |
| 53 | - | |
| 54 | - // 下面几个都是不匹配的数据 | |
| 55 | - // 登录失败的 | |
| 56 | - loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setResult(CAPTCHA_CODE_ERROR.getResult()))); | |
| 57 | - // 不同ip段的 | |
| 58 | - loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18"))); | |
| 59 | - // 不同username | |
| 60 | - loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUsername("yunai"))); | |
| 61 | - // 构造一个早期时间 2021-02-06 00:00:00 | |
| 62 | - loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6)))); | |
| 63 | - | |
| 64 | - | |
| 44 | + // 测试 status 不匹配 | |
| 45 | + loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setResult(CAPTCHA_CODE_ERROR.getResult()))); | |
| 46 | + // 测试 ip 不匹配 | |
| 47 | + loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUserIp("192.168.128.18"))); | |
| 48 | + // 测试 username 不匹配 | |
| 49 | + loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUsername("yunai"))); | |
| 50 | + // 测试 createTime 不匹配 | |
| 51 | + loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setCreateTime(buildTime(2021, 2, 6)))); | |
| 65 | 52 | // 构造调用参数 |
| 66 | 53 | LoginLogPageReqVO reqVO = new LoginLogPageReqVO(); |
| 67 | - reqVO.setUsername("wangkai"); | |
| 54 | + reqVO.setUsername("wang"); | |
| 68 | 55 | reqVO.setUserIp("192.168.199"); |
| 69 | 56 | reqVO.setStatus(true); |
| 70 | - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 3, 5), | |
| 71 | - buildTime(2021, 3, 7)})); | |
| 57 | + reqVO.setCreateTime(buildBetweenTime(2021, 3, 5, 2021, 3, 7)); | |
| 72 | 58 | |
| 73 | - // 调用service方法 | |
| 59 | + // 调用 | |
| 74 | 60 | PageResult<LoginLogDO> pageResult = loginLogService.getLoginLogPage(reqVO); |
| 75 | - | |
| 76 | 61 | // 断言,只查到了一条符合条件的 |
| 77 | 62 | assertEquals(1, pageResult.getTotal()); |
| 78 | 63 | assertEquals(1, pageResult.getList().size()); |
| ... | ... | @@ -81,62 +66,45 @@ public class LoginLogServiceImplTest extends BaseDbUnitTest { |
| 81 | 66 | |
| 82 | 67 | @Test |
| 83 | 68 | public void testGetLoginLogList() { |
| 84 | - // 构造测试数据 | |
| 85 | - | |
| 86 | - // 登录成功的 | |
| 87 | - LoginLogDO loginLogDO = RandomUtils.randomPojo(LoginLogDO.class, logDO -> { | |
| 88 | - logDO.setLogType(RandomUtil.randomEle(cn.iocoder.yudao.module.system.enums.logger.LoginLogTypeEnum.values()).getType()); | |
| 89 | - logDO.setTraceId(TracerUtils.getTraceId()); | |
| 90 | - logDO.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue()); | |
| 91 | - | |
| 92 | - logDO.setUserIp("192.168.111.16"); | |
| 93 | - logDO.setUsername("wangxiaokai"); | |
| 94 | - logDO.setCreateTime(buildTime(2021, 3, 6)); | |
| 95 | - logDO.setResult(SUCCESS.getResult()); | |
| 69 | + // mock 数据 | |
| 70 | + LoginLogDO loginLogDO = randomPojo(LoginLogDO.class, o -> { | |
| 71 | + o.setUserIp("192.168.199.16"); | |
| 72 | + o.setUsername("wang"); | |
| 73 | + o.setResult(SUCCESS.getResult()); | |
| 74 | + o.setCreateTime(buildTime(2021, 3, 6)); | |
| 96 | 75 | }); |
| 97 | 76 | loginLogMapper.insert(loginLogDO); |
| 98 | - | |
| 99 | - // 下面几个都是不匹配的数据 | |
| 100 | - // 登录失败的 | |
| 101 | - loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setResult(CAPTCHA_CODE_ERROR.getResult()))); | |
| 102 | - // 不同ip段的 | |
| 103 | - loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUserIp("192.168.128.18"))); | |
| 104 | - // 不同username | |
| 105 | - loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setUsername("yunai"))); | |
| 106 | - // 构造一个早期时间 2021-02-06 00:00:00 | |
| 107 | - loginLogMapper.insert(ObjectUtils.cloneIgnoreId(loginLogDO, logDO -> logDO.setCreateTime(buildTime(2021, 2, 6)))); | |
| 108 | - | |
| 77 | + // 测试 status 不匹配 | |
| 78 | + loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setResult(CAPTCHA_CODE_ERROR.getResult()))); | |
| 79 | + // 测试 ip 不匹配 | |
| 80 | + loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUserIp("192.168.128.18"))); | |
| 81 | + // 测试 username 不匹配 | |
| 82 | + loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setUsername("yunai"))); | |
| 83 | + // 测试 createTime 不匹配 | |
| 84 | + loginLogMapper.insert(cloneIgnoreId(loginLogDO, o -> o.setCreateTime(buildTime(2021, 2, 6)))); | |
| 109 | 85 | // 构造调用参数 |
| 110 | 86 | LoginLogExportReqVO reqVO = new LoginLogExportReqVO(); |
| 111 | - reqVO.setUsername("wangxiaokai"); | |
| 112 | - reqVO.setUserIp("192.168.111"); | |
| 87 | + reqVO.setUsername("wang"); | |
| 88 | + reqVO.setUserIp("192.168.199"); | |
| 113 | 89 | reqVO.setStatus(true); |
| 114 | - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 3, 5), | |
| 115 | - buildTime(2021, 3, 7)})); | |
| 90 | + reqVO.setCreateTime(buildBetweenTime(2021, 3, 5, 2021, 3, 7)); | |
| 116 | 91 | |
| 117 | 92 | // 调用service方法 |
| 118 | - List<LoginLogDO> loginLogList = loginLogService.getLoginLogList(reqVO); | |
| 119 | - | |
| 93 | + List<LoginLogDO> list = loginLogService.getLoginLogList(reqVO); | |
| 120 | 94 | // 断言 |
| 121 | - assertEquals(1, loginLogList.size()); | |
| 122 | - assertPojoEquals(loginLogDO, loginLogList.get(0)); | |
| 95 | + assertEquals(1, list.size()); | |
| 96 | + assertPojoEquals(loginLogDO, list.get(0)); | |
| 123 | 97 | } |
| 124 | 98 | |
| 125 | 99 | @Test |
| 126 | 100 | public void testCreateLoginLog() { |
| 127 | - LoginLogCreateReqDTO reqDTO = RandomUtils.randomPojo(LoginLogCreateReqDTO.class, vo -> { | |
| 128 | - // 指定随机的范围,避免超出范围入库失败 | |
| 129 | - vo.setUserType(randomEle(UserTypeEnum.values()).getValue()); | |
| 130 | - vo.setLogType(randomEle(LoginLogTypeEnum.values()).getType()); | |
| 131 | - vo.setResult(randomEle(values()).getResult()); | |
| 132 | - vo.setTraceId(TracerUtils.getTraceId()); | |
| 133 | - }); | |
| 101 | + LoginLogCreateReqDTO reqDTO = randomPojo(LoginLogCreateReqDTO.class); | |
| 134 | 102 | |
| 135 | 103 | // 调用 |
| 136 | 104 | loginLogService.createLoginLog(reqDTO); |
| 137 | - // 断言,忽略基本字段 | |
| 138 | - LoginLogDO sysLoginLogDO = loginLogMapper.selectOne(null); | |
| 139 | - assertPojoEquals(reqDTO, sysLoginLogDO); | |
| 105 | + // 断言 | |
| 106 | + LoginLogDO loginLogDO = loginLogMapper.selectOne(null); | |
| 107 | + assertPojoEquals(reqDTO, loginLogDO); | |
| 140 | 108 | } |
| 141 | 109 | |
| 142 | 110 | } | ... | ... |