This is an automated email from the ASF dual-hosted git repository.
zihaoxiang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 98bc9ce4c9 feat: inc coverage of alert plugin instance svc (#15799)
98bc9ce4c9 is described below
commit 98bc9ce4c9d4e161f48617ac0a1efeb10f9d6968
Author: Evan Sun <[email protected]>
AuthorDate: Thu Apr 4 20:29:18 2024 +0800
feat: inc coverage of alert plugin instance svc (#15799)
Co-authored-by: abzymeinsjtu <[email protected]>
---
.../constants/ApiFuncIdentificationConstant.java | 3 +-
.../impl/AlertPluginInstanceServiceImpl.java | 6 +-
.../service/AlertPluginInstanceServiceTest.java | 107 +++++++++++++++++++--
3 files changed, 105 insertions(+), 11 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/constants/ApiFuncIdentificationConstant.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/constants/ApiFuncIdentificationConstant.java
index b93792307f..480272bdc6 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/constants/ApiFuncIdentificationConstant.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/constants/ApiFuncIdentificationConstant.java
@@ -37,8 +37,7 @@ public class ApiFuncIdentificationConstant {
public static final String TENANT_CREATE = "security:tenant:create";
public static final String TENANT_UPDATE = "security:tenant:update";
public static final String TENANT_DELETE = "security:tenant:delete";
- public static final String ALART_LIST = "monitor:alert:view";
- public static final String ALART_INSTANCE_CREATE =
"security:alert-plugin:create";
+ public static final String ALERT_INSTANCE_CREATE =
"security:alert-plugin:create";
public static final String ALERT_PLUGIN_UPDATE =
"security:alert-plugin:update";
public static final String ALERT_PLUGIN_DELETE =
"security:alert-plugin:delete";
public static final String WORKER_GROUP_CREATE =
"security:worker-group:create";
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java
index 59eaca3c83..cf07c9fd73 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertPluginInstanceServiceImpl.java
@@ -17,7 +17,7 @@
package org.apache.dolphinscheduler.api.service.impl;
-import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ALART_INSTANCE_CREATE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ALERT_INSTANCE_CREATE;
import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ALERT_PLUGIN_DELETE;
import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ALERT_PLUGIN_UPDATE;
@@ -108,7 +108,7 @@ public class AlertPluginInstanceServiceImpl extends
BaseServiceImpl implements A
WarningType warningType,
String pluginInstanceParams) {
- if (!canOperatorPermissions(loginUser, null,
AuthorizationType.ALERT_PLUGIN_INSTANCE, ALART_INSTANCE_CREATE)) {
+ if (!canOperatorPermissions(loginUser, null,
AuthorizationType.ALERT_PLUGIN_INSTANCE, ALERT_INSTANCE_CREATE)) {
throw new ServiceException(Status.USER_NO_OPERATION_PERM);
}
@@ -359,7 +359,7 @@ public class AlertPluginInstanceServiceImpl extends
BaseServiceImpl implements A
throw new ServiceException(Status.ALERT_TEST_SENDING_FAILED,
e.getMessage());
}
- if (alertSendResponse.isSuccess()) {
+ if (!alertSendResponse.isSuccess()) {
throw new ServiceException(Status.ALERT_TEST_SENDING_FAILED,
alertSendResponse.getResResults().get(0).getMessage());
}
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AlertPluginInstanceServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AlertPluginInstanceServiceTest.java
index 52910858d5..bd8a039951 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AlertPluginInstanceServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AlertPluginInstanceServiceTest.java
@@ -18,9 +18,11 @@
package org.apache.dolphinscheduler.api.service;
import static
org.apache.dolphinscheduler.api.AssertionsHelper.assertThrowsServiceException;
-import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ALART_INSTANCE_CREATE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ALARM_INSTANCE_MANAGE;
+import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ALERT_INSTANCE_CREATE;
import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ALERT_PLUGIN_DELETE;
import static
org.apache.dolphinscheduler.api.constants.ApiFuncIdentificationConstant.ALERT_PLUGIN_UPDATE;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.Mockito.when;
@@ -40,7 +42,6 @@ import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.mapper.AlertGroupMapper;
import org.apache.dolphinscheduler.dao.mapper.AlertPluginInstanceMapper;
import org.apache.dolphinscheduler.dao.mapper.PluginDefineMapper;
-import org.apache.dolphinscheduler.extract.alert.request.AlertSendResponse;
import org.apache.dolphinscheduler.registry.api.RegistryClient;
import org.apache.dolphinscheduler.registry.api.enums.RegistryNodeType;
@@ -60,6 +61,9 @@ import org.mockito.junit.jupiter.MockitoExtension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
/**
* alert plugin instance service test
*/
@@ -90,12 +94,16 @@ public class AlertPluginInstanceServiceTest {
private User user;
+ private User noPermUser;
+
private final AlertPluginInstanceType normalInstanceType =
AlertPluginInstanceType.NORMAL;
private final AlertPluginInstanceType globalInstanceType =
AlertPluginInstanceType.GLOBAL;
private final WarningType warningType = WarningType.ALL;
+ private final Integer GLOBAL_ALERT_GROUP_ID = 2;
+
private String uiParams = "[\n"
+ " {\n"
+ " \"field\":\"userParams\",\n"
@@ -172,21 +180,33 @@ public class AlertPluginInstanceServiceTest {
private String paramsMap =
"{\"path\":\"/kris/script/path\",\"userParams\":\"userParams\",\"type\":\"0\"}";
+ private AlertPluginInstance alertPluginInstance;
+
@BeforeEach
public void before() {
user = new User();
user.setUserType(UserType.ADMIN_USER);
user.setId(1);
- AlertPluginInstance alertPluginInstance = getAlertPluginInstance(1,
normalInstanceType, "test");
+
+ noPermUser = new User();
+ noPermUser.setUserType(UserType.GENERAL_USER);
+ noPermUser.setId(2);
+
+ alertPluginInstance = getAlertPluginInstance(1, normalInstanceType,
"test");
alertPluginInstances = new ArrayList<>();
alertPluginInstances.add(alertPluginInstance);
}
@Test
public void testCreate() {
+
when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.ALERT_PLUGIN_INSTANCE,
+ noPermUser.getId(), ALERT_INSTANCE_CREATE,
baseServiceLogger)).thenReturn(false);
+ assertThrowsServiceException(Status.USER_NO_OPERATION_PERM, () ->
alertPluginInstanceService.create(noPermUser,
+ 1, "test", normalInstanceType, warningType, uiParams));
+
when(alertPluginInstanceMapper.existInstanceName("test")).thenReturn(true);
when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.ALERT_PLUGIN_INSTANCE,
- 1, ALART_INSTANCE_CREATE, baseServiceLogger)).thenReturn(true);
+ 1, ALERT_INSTANCE_CREATE, baseServiceLogger)).thenReturn(true);
when(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.ALERT_PLUGIN_INSTANCE,
null, 0, baseServiceLogger)).thenReturn(true);
assertThrowsServiceException(Status.PLUGIN_INSTANCE_ALREADY_EXISTS,
@@ -195,6 +215,19 @@ public class AlertPluginInstanceServiceTest {
AlertPluginInstance alertPluginInstance =
alertPluginInstanceService.create(user, 1, "test1",
normalInstanceType, warningType, uiParams);
assertNotNull(alertPluginInstance);
+
+
when(alertGroupMapper.selectById(GLOBAL_ALERT_GROUP_ID)).thenReturn(getGlobalAlertGroup());
+ assertDoesNotThrow(() -> alertPluginInstanceService.create(user, 1,
"global_plugin_instance",
+ AlertPluginInstanceType.GLOBAL, warningType, uiParams));
+
+
when(alertGroupMapper.selectById(GLOBAL_ALERT_GROUP_ID)).thenReturn(getGlobalAlertGroup("1"));
+ assertDoesNotThrow(() -> alertPluginInstanceService.create(user, 1,
"global_plugin_instance",
+ AlertPluginInstanceType.GLOBAL, warningType, uiParams));
+
+ when(alertPluginInstanceMapper.insert(Mockito.any())).thenReturn(-1);
+ assertThrowsServiceException(Status.SAVE_ERROR,
+ () -> alertPluginInstanceService.create(user, 1,
"test_insert_error", normalInstanceType, warningType,
+ uiParams));
}
@Test
@@ -202,11 +235,10 @@ public class AlertPluginInstanceServiceTest {
Mockito.when(registryClient.getServerList(RegistryNodeType.ALERT_SERVER)).thenReturn(new
ArrayList<>());
assertThrowsServiceException(Status.ALERT_SERVER_NOT_EXIST,
() -> alertPluginInstanceService.testSend(1, uiParams));
- AlertSendResponse.AlertSendResponseResult alertResult = new
AlertSendResponse.AlertSendResponseResult();
- alertResult.setSuccess(true);
Server server = new Server();
server.setPort(50052);
server.setHost("127.0.0.1");
+
Mockito.when(registryClient.getServerList(RegistryNodeType.ALERT_SERVER))
.thenReturn(Collections.singletonList(server));
assertThrowsServiceException(Status.ALERT_TEST_SENDING_FAILED,
@@ -215,6 +247,11 @@ public class AlertPluginInstanceServiceTest {
@Test
public void testDelete() {
+
when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.ALERT_PLUGIN_INSTANCE,
+ noPermUser.getId(), ALERT_PLUGIN_DELETE,
baseServiceLogger)).thenReturn(false);
+ assertThrowsServiceException(Status.USER_NO_OPERATION_PERM,
+ () -> alertPluginInstanceService.deleteById(noPermUser, 1));
+
List<String> ids = Arrays.asList("11,2,3", "5,96", null, "98,1");
when(alertGroupMapper.queryInstanceIdsList()).thenReturn(ids);
when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.ALERT_PLUGIN_INSTANCE,
@@ -241,10 +278,18 @@ public class AlertPluginInstanceServiceTest {
when(alertPluginInstanceMapper.deleteById(5)).thenReturn(1);
Assertions.assertDoesNotThrow(() ->
alertPluginInstanceService.deleteById(user, 5));
+
+
when(alertGroupMapper.queryInstanceIdsList()).thenReturn(Collections.emptyList());
+ Assertions.assertDoesNotThrow(() ->
alertPluginInstanceService.deleteById(user, 9));
}
@Test
public void testUpdate() {
+
when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.ALERT_PLUGIN_INSTANCE,
+ noPermUser.getId(), ALERT_PLUGIN_UPDATE,
baseServiceLogger)).thenReturn(false);
+ assertThrowsServiceException(Status.USER_NO_OPERATION_PERM,
+ () -> alertPluginInstanceService.updateById(noPermUser, 1,
"test", warningType, uiParams));
+
when(alertPluginInstanceMapper.updateById(Mockito.any())).thenReturn(0);
when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.ALERT_PLUGIN_INSTANCE,
1,
ALERT_PLUGIN_UPDATE, baseServiceLogger)).thenReturn(true);
@@ -259,8 +304,51 @@ public class AlertPluginInstanceServiceTest {
Assertions.assertNotNull(alertPluginInstance);
}
+ @Test
+ public void testGetById() {
+
when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.ALERT_PLUGIN_INSTANCE,
+ noPermUser.getId(), ALARM_INSTANCE_MANAGE,
baseServiceLogger)).thenReturn(false);
+ assertThrowsServiceException(Status.USER_NO_OPERATION_PERM,
+ () -> alertPluginInstanceService.getById(noPermUser, 1));
+
+
when(resourcePermissionCheckService.operationPermissionCheck(AuthorizationType.ALERT_PLUGIN_INSTANCE,
+ user.getId(), ALARM_INSTANCE_MANAGE,
baseServiceLogger)).thenReturn(true);
+
when(resourcePermissionCheckService.resourcePermissionCheck(AuthorizationType.ALERT_PLUGIN_INSTANCE,
null, 0,
+ baseServiceLogger)).thenReturn(true);
+ when(alertPluginInstanceMapper.selectById(1))
+ .thenReturn(getAlertPluginInstance(1,
AlertPluginInstanceType.NORMAL, "test_get_instance"));
+
+ Assertions.assertEquals(alertPluginInstanceService.getById(user,
1).getId(), 1);
+ }
+
+ @Test
+ public void testCheckExistPluginInstanceName() {
+
when(alertPluginInstanceMapper.existInstanceName(Mockito.any(String.class))).thenReturn(false);
+ Assertions.assertEquals(false,
alertPluginInstanceService.checkExistPluginInstanceName("test"));
+ }
+
+ @Test
+ public void testListPaging() {
+ IPage<AlertPluginInstance> page = new Page<>();
+ page.setRecords(Collections.singletonList(alertPluginInstance));
+ page.setTotal(1);
+ page.setPages(1);
+
+
when(alertPluginInstanceMapper.queryByInstanceNamePage(Mockito.any(Page.class),
Mockito.any(String.class)))
+ .thenReturn(page);
+ assertDoesNotThrow(() -> alertPluginInstanceService.listPaging(user,
"test", 1, 1));
+ }
+
@Test
public void testQueryAll() {
+
when(alertPluginInstanceMapper.queryAllAlertPluginInstanceList()).thenReturn(Collections.emptyList());
+ Assertions.assertEquals(0,
alertPluginInstanceService.queryAll().size());
+
+ when(alertPluginInstanceMapper.queryAllAlertPluginInstanceList())
+ .thenReturn(Collections.singletonList(alertPluginInstance));
+
when(pluginDefineMapper.queryAllPluginDefineList()).thenReturn(Collections.emptyList());
+ Assertions.assertEquals(0,
alertPluginInstanceService.queryAll().size());
+
AlertPluginInstance alertPluginInstance = getAlertPluginInstance(1,
normalInstanceType, "test");
PluginDefine pluginDefine = new PluginDefine("script", "script",
uiParams);
pluginDefine.setId(1);
@@ -283,4 +371,11 @@ public class AlertPluginInstanceServiceTest {
return alertPluginInstance;
}
+ private AlertGroup getGlobalAlertGroup(String... alertPluginInstanceIds) {
+ AlertGroup globalAlertGroup = new AlertGroup();
+ globalAlertGroup.setId(2);
+ globalAlertGroup.setAlertInstanceIds(String.join(",",
alertPluginInstanceIds));
+
+ return globalAlertGroup;
+ }
}