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;
+    }
 }

Reply via email to