fix(系统设置): 插件更新接口不传name字段报错

This commit is contained in:
jianxing 2023-08-08 13:46:08 +08:00 committed by jianxing
parent 2974d1196b
commit 35c697674c
3 changed files with 38 additions and 21 deletions

View File

@ -22,10 +22,10 @@ public class PluginUpdateRequest {
private String name;
@Schema(title = "是否启用插件, 默认启用")
private Boolean enable = true;
private Boolean enable;
@Schema(title = "是否是全局插件, 默认全局")
private Boolean global = true;
private Boolean global;
@Schema(title = "插件描述")
@Size(min = 1, max = 500, message = "{plugin.scenario.length_range}", groups = {Created.class, Updated.class})

View File

@ -16,6 +16,8 @@ import io.metersphere.system.mapper.PluginMapper;
import io.metersphere.system.request.PluginUpdateRequest;
import jakarta.annotation.Resource;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -74,6 +76,9 @@ public class PluginService {
plugin.setFileName(file.getOriginalFilename());
plugin.setCreateTime(System.currentTimeMillis());
plugin.setUpdateTime(System.currentTimeMillis());
// 如果没有默认设置为 true
request.setEnable(!BooleanUtils.isFalse(request.getEnable()));
request.setEnable(!BooleanUtils.isFalse(request.getEnable()));
// 校验重名
checkPluginAddExist(plugin);
@ -161,7 +166,7 @@ public class PluginService {
// 校验重名
checkPluginUpdateExist(plugin);
pluginMapper.updateByPrimaryKeySelective(plugin);
if (request.getGlobal()) {
if (BooleanUtils.isTrue(request.getGlobal())) {
// 全局插件删除和组织的关联关系
request.setOrganizationIds(new ArrayList<>(0));
}
@ -170,6 +175,9 @@ public class PluginService {
}
private void checkPluginUpdateExist(Plugin plugin) {
if (StringUtils.isBlank(plugin.getName())) {
return;
}
PluginExample example = new PluginExample();
example.createCriteria()
.andIdNotEqualTo(plugin.getId())

View File

@ -78,7 +78,7 @@ public class PluginControllerTests extends BaseTest {
request.setName("test");
request.setDescription("test desc");
request.setGlobal(false);
request.setGlobal(true);
request.setEnable(false);
request.setOrganizationIds(Arrays.asList(org.getId()));
MultiValueMap<String, Object> multiValueMap = getDefaultMultiPartParam(request, jarFile);
@ -94,10 +94,27 @@ public class PluginControllerTests extends BaseTest {
Assertions.assertEquals(plugin.getXpack(), false);
Assertions.assertEquals(plugin.getFileName(), jarFile.getName());
Assertions.assertEquals(plugin.getScenario(), PluginScenarioType.API.name());
Assertions.assertEquals(Arrays.asList(org.getId()), getOrgIdsByPlugId(plugin.getId()));
Assertions.assertEquals(new ArrayList<>(0), getOrgIdsByPlugId(plugin.getId()));
Assertions.assertEquals(Arrays.asList("connect", "disconnect", "pub", "sub"), getScriptIdsByPlugId(plugin.getId()));
addPlugin = plugin;
// 增加覆盖率
this.requestGetWithOkAndReturn(DEFAULT_LIST);
// 校验 global tru e时organizationIds 为空
request.setGlobal(false);
request.setEnable(true);
request.setName("test2");
request.setOrganizationIds(Arrays.asList(org.getId()));
MvcResult antoherMvcResult = this.requestMultipartWithOkAndReturn(DEFAULT_ADD,
getDefaultMultiPartParam(request, anotherJarFile));
Plugin antoherPlugin = pluginMapper.selectByPrimaryKey(getResultData(antoherMvcResult, Plugin.class).getId());
Assertions.assertEquals(antoherPlugin.getEnable(), request.getEnable());
Assertions.assertEquals(antoherPlugin.getGlobal(), request.getGlobal());
Assertions.assertEquals(Arrays.asList(org.getId()), getOrgIdsByPlugId(antoherPlugin.getId()));
anotherAddPlugin = antoherPlugin;
addPlugin = plugin;
// @@重名校验异常
// 校验插件名称重名
assertErrorCode(this.requestMultipart(DEFAULT_ADD,
@ -132,20 +149,6 @@ public class PluginControllerTests extends BaseTest {
assertErrorCode(this.requestMultipart(DEFAULT_ADD,
getDefaultMultiPartParam(request, scriptIdRepeatFile)), PLUGIN_SCRIPT_EXIST);
request.setGlobal(true);
request.setEnable(true);
request.setName("test2");
MvcResult antoherMvcResult = this.requestMultipartWithOkAndReturn(DEFAULT_ADD,
getDefaultMultiPartParam(request, anotherJarFile));
// 校验 global tru e时organizationIds 为空
Plugin antoherPlugin = pluginMapper.selectByPrimaryKey(getResultData(antoherMvcResult, Plugin.class).getId());
Assertions.assertEquals(antoherPlugin.getEnable(), request.getEnable());
Assertions.assertEquals(antoherPlugin.getGlobal(), request.getGlobal());
Assertions.assertEquals(new ArrayList<>(0), getOrgIdsByPlugId(antoherPlugin.getId()));
anotherAddPlugin = antoherPlugin;
this.addPlugin = plugin;
// @@校验日志
checkLog(this.addPlugin.getId(), OperationLogType.ADD);
// @@校验权限
@ -185,12 +188,18 @@ public class PluginControllerTests extends BaseTest {
// 校验 global false organizationIds 数据
request.setGlobal(false);
this.requestPostWithOk(DEFAULT_UPDATE, request);
Assertions.assertEquals(Arrays.asList(org.getId()), getOrgIdsByPlugId(plugin.getId()));
Assertions.assertEquals(Arrays.asList(org.getId()), getOrgIdsByPlugId(request.getId()));
// 只修改启用禁用
PluginUpdateRequest activeRequest = new PluginUpdateRequest();
activeRequest.setId(request.getId());
activeRequest.setEnable(true);
this.requestPostWithOk(DEFAULT_UPDATE, activeRequest);
// 校验组织为null不修改关联关系
request.setOrganizationIds(null);
this.requestPostWithOk(DEFAULT_UPDATE, request);
Assertions.assertEquals(Arrays.asList(org.getId()), getOrgIdsByPlugId(plugin.getId()));
Assertions.assertEquals(Arrays.asList(org.getId()), getOrgIdsByPlugId(request.getId()));
// @@重名校验异常
request.setName(anotherAddPlugin.getName());