Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
ac661150
提交
ac661150
authored
2月 03, 2023
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
infra:完善 dataSource 的单元测试
上级
f620bc3f
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
64 行增加
和
7 行删除
+64
-7
DataSourceConfigServiceImpl.java
.../module/infra/service/db/DataSourceConfigServiceImpl.java
+3
-3
DataSourceConfigServiceImplTest.java
...ule/infra/service/db/DataSourceConfigServiceImplTest.java
+61
-4
没有找到文件。
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImpl.java
浏览文件 @
ac661150
...
...
@@ -37,7 +37,7 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService {
@Override
public
Long
createDataSourceConfig
(
DataSourceConfigCreateReqVO
createReqVO
)
{
DataSourceConfigDO
dataSourceConfig
=
DataSourceConfigConvert
.
INSTANCE
.
convert
(
createReqVO
);
check
ConnectionOK
(
dataSourceConfig
);
validate
ConnectionOK
(
dataSourceConfig
);
// 插入
dataSourceConfigMapper
.
insert
(
dataSourceConfig
);
...
...
@@ -50,7 +50,7 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService {
// 校验存在
validateDataSourceConfigExists
(
updateReqVO
.
getId
());
DataSourceConfigDO
updateObj
=
DataSourceConfigConvert
.
INSTANCE
.
convert
(
updateReqVO
);
check
ConnectionOK
(
updateObj
);
validate
ConnectionOK
(
updateObj
);
// 更新
dataSourceConfigMapper
.
updateById
(
updateObj
);
...
...
@@ -88,7 +88,7 @@ public class DataSourceConfigServiceImpl implements DataSourceConfigService {
return
result
;
}
private
void
check
ConnectionOK
(
DataSourceConfigDO
config
)
{
private
void
validate
ConnectionOK
(
DataSourceConfigDO
config
)
{
boolean
success
=
JdbcUtils
.
isConnectionOK
(
config
.
getUrl
(),
config
.
getUsername
(),
config
.
getPassword
());
if
(!
success
)
{
throw
exception
(
DATA_SOURCE_CONFIG_NOT_OK
);
...
...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/db/DataSourceConfigServiceImplTest.java
浏览文件 @
ac661150
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
service
.
db
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.util.ReflectUtil
;
import
cn.hutool.crypto.symmetric.AES
;
import
cn.iocoder.yudao.framework.mybatis.core.type.EncryptTypeHandler
;
...
...
@@ -9,6 +10,7 @@ import cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigCrea
import
cn.iocoder.yudao.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO
;
import
cn.iocoder.yudao.module.infra.dal.dataobject.db.DataSourceConfigDO
;
import
cn.iocoder.yudao.module.infra.dal.mysql.db.DataSourceConfigMapper
;
import
com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty
;
import
com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
...
...
@@ -18,14 +20,14 @@ import org.springframework.boot.test.mock.mockito.MockBean;
import
org.springframework.context.annotation.Import
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
test
.
core
.
util
.
AssertUtils
.
assertPojoEquals
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
test
.
core
.
util
.
AssertUtils
.
assertServiceException
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
test
.
core
.
util
.
RandomUtils
.
randomLongId
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
test
.
core
.
util
.
RandomUtils
.
randomPojo
;
import
static
cn
.
iocoder
.
yudao
.
module
.
infra
.
enums
.
ErrorCodeConstants
.
DATA_SOURCE_CONFIG_NOT_EXISTS
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertNotNull
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.
assertNull
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
import
static
org
.
mockito
.
ArgumentMatchers
.
anyString
;
import
static
org
.
mockito
.
ArgumentMatchers
.
eq
;
import
static
org
.
mockito
.
Mockito
.
mockStatic
;
...
...
@@ -57,6 +59,11 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
ReflectUtil
.
setFieldValue
(
EncryptTypeHandler
.
class
,
"aes"
,
aes
);
when
(
aes
.
encryptBase64
(
anyString
())).
then
((
Answer
<
String
>)
invocation
->
invocation
.
getArgument
(
0
));
when
(
aes
.
decryptStr
(
anyString
())).
then
((
Answer
<
String
>)
invocation
->
invocation
.
getArgument
(
0
));
// mock DynamicDataSourceProperties
when
(
dynamicDataSourceProperties
.
getPrimary
()).
thenReturn
(
"primary"
);
when
(
dynamicDataSourceProperties
.
getDatasource
()).
thenReturn
(
MapUtil
.
of
(
"primary"
,
new
DataSourceProperty
().
setUrl
(
"http://localhost:3306"
).
setUsername
(
"yunai"
).
setPassword
(
"tudou"
)));
}
@Test
...
...
@@ -89,7 +96,6 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
o
.
setId
(
dbDataSourceConfig
.
getId
());
// 设置更新的 ID
});
// mock 方法
// when(stringEncryptor.encrypt(eq(reqVO.getPassword()))).thenReturn("123456");
databaseUtilsMock
.
when
(()
->
JdbcUtils
.
isConnectionOK
(
eq
(
reqVO
.
getUrl
()),
eq
(
reqVO
.
getUsername
()),
eq
(
reqVO
.
getPassword
()))).
thenReturn
(
true
);
...
...
@@ -142,7 +148,58 @@ public class DataSourceConfigServiceImplTest extends BaseDbUnitTest {
// 调用
DataSourceConfigDO
result
=
dataSourceConfigMapper
.
selectOne
(
DataSourceConfigDO:
:
getPassword
,
EncryptTypeHandler
.
encrypt
(
dbDataSourceConfig
.
getPassword
()));
System
.
out
.
println
(
result
);
assertPojoEquals
(
dbDataSourceConfig
,
result
);
}
@Test
public
void
testGetDataSourceConfig_master
()
{
// 准备参数
Long
id
=
0L
;
// mock 方法
// 调用
DataSourceConfigDO
dataSourceConfig
=
dataSourceConfigService
.
getDataSourceConfig
(
id
);
// 断言
assertEquals
(
id
,
dataSourceConfig
.
getId
());
assertEquals
(
"primary"
,
dataSourceConfig
.
getName
());
assertEquals
(
"http://localhost:3306"
,
dataSourceConfig
.
getUrl
());
assertEquals
(
"yunai"
,
dataSourceConfig
.
getUsername
());
assertEquals
(
"tudou"
,
dataSourceConfig
.
getPassword
());
}
@Test
public
void
testGetDataSourceConfig_normal
()
{
// mock 数据
DataSourceConfigDO
dbDataSourceConfig
=
randomPojo
(
DataSourceConfigDO
.
class
);
dataSourceConfigMapper
.
insert
(
dbDataSourceConfig
);
// @Sql: 先插入出一条存在的数据
// 准备参数
Long
id
=
dbDataSourceConfig
.
getId
();
// 调用
DataSourceConfigDO
dataSourceConfig
=
dataSourceConfigService
.
getDataSourceConfig
(
id
);
// 断言
assertPojoEquals
(
dbDataSourceConfig
,
dataSourceConfig
);
}
@Test
public
void
testGetDataSourceConfigList
()
{
// mock 数据
DataSourceConfigDO
dbDataSourceConfig
=
randomPojo
(
DataSourceConfigDO
.
class
);
dataSourceConfigMapper
.
insert
(
dbDataSourceConfig
);
// @Sql: 先插入出一条存在的数据
// 准备参数
// 调用
List
<
DataSourceConfigDO
>
dataSourceConfigList
=
dataSourceConfigService
.
getDataSourceConfigList
();
// 断言
assertEquals
(
2
,
dataSourceConfigList
.
size
());
// master
assertEquals
(
0L
,
dataSourceConfigList
.
get
(
0
).
getId
());
assertEquals
(
"primary"
,
dataSourceConfigList
.
get
(
0
).
getName
());
assertEquals
(
"http://localhost:3306"
,
dataSourceConfigList
.
get
(
0
).
getUrl
());
assertEquals
(
"yunai"
,
dataSourceConfigList
.
get
(
0
).
getUsername
());
assertEquals
(
"tudou"
,
dataSourceConfigList
.
get
(
0
).
getPassword
());
// normal
assertPojoEquals
(
dbDataSourceConfig
,
dataSourceConfigList
.
get
(
1
));
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论