This is an automated email from the ASF dual-hosted git repository.

gongchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git


The following commit(s) were added to refs/heads/master by this push:
     new 3b323e188 [test]  add NoticeConfigControllerTest and 
MonitorsControllerTest test (#2290)
3b323e188 is described below

commit 3b323e1882381445cc4e480e066800a29dc31dd9
Author: linDong <[email protected]>
AuthorDate: Tue Jul 16 22:57:02 2024 +0800

    [test]  add NoticeConfigControllerTest and MonitorsControllerTest test 
(#2290)
---
 .../manager/controller/MonitorsControllerTest.java |  47 +++++++-
 .../controller/NoticeConfigControllerTest.java     | 133 ++++++++++++++++++---
 2 files changed, 162 insertions(+), 18 deletions(-)

diff --git 
a/manager/src/test/java/org/apache/hertzbeat/manager/controller/MonitorsControllerTest.java
 
b/manager/src/test/java/org/apache/hertzbeat/manager/controller/MonitorsControllerTest.java
index c8d5bc873..5c630dcf4 100644
--- 
a/manager/src/test/java/org/apache/hertzbeat/manager/controller/MonitorsControllerTest.java
+++ 
b/manager/src/test/java/org/apache/hertzbeat/manager/controller/MonitorsControllerTest.java
@@ -17,10 +17,14 @@
 
 package org.apache.hertzbeat.manager.controller;
 
-import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.mockito.Mockito.doNothing;
+import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
+
 import org.apache.hertzbeat.common.constants.CommonConstants;
 import org.apache.hertzbeat.common.util.JsonUtil;
 import org.apache.hertzbeat.manager.service.impl.MonitorServiceImpl;
@@ -29,11 +33,13 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.junit.jupiter.MockitoExtension;
 import org.springframework.http.MediaType;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * Test case for {@link MonitorsController}
@@ -115,4 +121,41 @@ class MonitorsControllerTest {
                 .andExpect(jsonPath("$.code").value((int) 
CommonConstants.SUCCESS_CODE))
                 .andReturn();
     }
+
+    @Test
+    void export() throws Exception {
+        List<Long> ids = Arrays.asList(6565463543L, 6565463544L);
+        String type = "JSON";
+
+        this.mockMvc.perform(MockMvcRequestBuilders.get("/api/monitors/export")
+                        .param("ids", String.join(",", 
ids.stream().map(String::valueOf).collect(Collectors.toList())))
+                        .param("type", type))
+                .andExpect(status().isOk())
+                .andReturn();
+    }
+
+    @Test
+    void export2() throws Exception {
+        // Mock the behavior of monitorService.importConfig
+        doNothing().when(monitorService).importConfig((MultipartFile) 
Mockito.any());
+
+        // Perform the request and verify the response
+        
this.mockMvc.perform(MockMvcRequestBuilders.post("/api/monitors/import")
+                        .contentType(MediaType.MULTIPART_FORM_DATA)
+                        .param("file", "testFileContent"))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.code").value("0"))
+                .andExpect(jsonPath("$.msg").value("Import success"));
+    }
+
+    @Test
+    void duplicateMonitors() throws Exception {
+        // Mock the behavior of monitorService.copyMonitors
+        doNothing().when(monitorService).copyMonitors(List.of(6565463543L));
+
+        // Perform the POST request and verify the response
+        this.mockMvc.perform(MockMvcRequestBuilders.post("/api/monitors/copy")
+                        .param("ids", "6565463543"))
+                .andExpect(status().isOk());
+    }
 }
diff --git 
a/manager/src/test/java/org/apache/hertzbeat/manager/controller/NoticeConfigControllerTest.java
 
b/manager/src/test/java/org/apache/hertzbeat/manager/controller/NoticeConfigControllerTest.java
index 33a775818..8ba3ef291 100644
--- 
a/manager/src/test/java/org/apache/hertzbeat/manager/controller/NoticeConfigControllerTest.java
+++ 
b/manager/src/test/java/org/apache/hertzbeat/manager/controller/NoticeConfigControllerTest.java
@@ -17,10 +17,15 @@
 
 package org.apache.hertzbeat.manager.controller;
 
+import static org.mockito.Mockito.*;
+import static 
org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
 import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
+
 import org.apache.hertzbeat.common.constants.CommonConstants;
 import org.apache.hertzbeat.common.entity.manager.NoticeReceiver;
 import org.apache.hertzbeat.common.entity.manager.NoticeRule;
@@ -117,7 +122,7 @@ class NoticeConfigControllerTest {
     void addNewNoticeReceiver() throws Exception {
         NoticeReceiver noticeReceiver = getNoticeReceiver();
         System.out.println(noticeReceiver);
-        
this.mockMvc.perform(MockMvcRequestBuilders.post("/api/notice/receiver")
+        this.mockMvc.perform(post("/api/notice/receiver")
                         .contentType(MediaType.APPLICATION_JSON)
                         .content(JsonUtil.toJson(noticeReceiver)))
                 .andExpect(status().isOk())
@@ -130,7 +135,7 @@ class NoticeConfigControllerTest {
     void editNoticeReceiver() throws Exception {
         NoticeReceiver noticeReceiver = getNoticeReceiver();
         System.out.println(noticeReceiver);
-        this.mockMvc.perform(MockMvcRequestBuilders.put("/api/notice/receiver")
+        this.mockMvc.perform(put("/api/notice/receiver")
                         .contentType(MediaType.APPLICATION_JSON)
                         .content(JsonUtil.toJson(noticeReceiver)))
                 .andExpect(status().isOk())
@@ -144,19 +149,19 @@ class NoticeConfigControllerTest {
     void deleteNoticeReceiver() throws Exception {
         NoticeReceiver noticeReceiver = getNoticeReceiver();
 
-        Mockito.when(noticeConfigService.getReceiverById(7565463543L))
+        when(noticeConfigService.getReceiverById(7565463543L))
                 .thenReturn(noticeReceiver);
-        Mockito.when(noticeConfigService.getReceiverById(6565463543L))
+        when(noticeConfigService.getReceiverById(6565463543L))
                 .thenReturn(null);
 
 
-        
this.mockMvc.perform(MockMvcRequestBuilders.delete("/api/notice/receiver/{id}", 
6565463543L))
+        this.mockMvc.perform(delete("/api/notice/receiver/{id}", 6565463543L))
                 .andExpect(status().isOk())
                 .andExpect(jsonPath("$.code").value((int) 
CommonConstants.SUCCESS_CODE))
                 .andExpect(jsonPath("$.msg").value("The relevant information 
of the recipient could not be found, please check whether the parameters are 
correct"))
                 .andReturn();
 
-        
this.mockMvc.perform(MockMvcRequestBuilders.delete("/api/notice/receiver/{id}", 
7565463543L))
+        this.mockMvc.perform(delete("/api/notice/receiver/{id}", 7565463543L))
                 .andExpect(status().isOk())
                 .andExpect(jsonPath("$.code").value((int) 
CommonConstants.SUCCESS_CODE))
                 .andExpect(jsonPath("$.msg").value("Delete success"))
@@ -177,7 +182,7 @@ class NoticeConfigControllerTest {
     @Test
     void addNewNoticeRule() throws Exception {
         NoticeRule noticeRule = getNoticeRule();
-        this.mockMvc.perform(MockMvcRequestBuilders.post("/api/notice/rule")
+        this.mockMvc.perform(post("/api/notice/rule")
                         .contentType(MediaType.APPLICATION_JSON)
                         .content(JsonUtil.toJson(noticeRule)))
                 .andExpect(status().isOk())
@@ -189,7 +194,7 @@ class NoticeConfigControllerTest {
     @Test
     void editNoticeRule() throws Exception {
         NoticeRule noticeRule = getNoticeRule();
-        this.mockMvc.perform(MockMvcRequestBuilders.put("/api/notice/rule")
+        this.mockMvc.perform(put("/api/notice/rule")
                         .contentType(MediaType.APPLICATION_JSON)
                         .content(JsonUtil.toJson(noticeRule)))
                 .andExpect(status().isOk())
@@ -202,19 +207,19 @@ class NoticeConfigControllerTest {
     void deleteNoticeRule() throws Exception {
         NoticeRule noticeRule = getNoticeRule();
 
-        Mockito.when(noticeConfigService.getNoticeRulesById(7565463543L))
+        when(noticeConfigService.getNoticeRulesById(7565463543L))
                 .thenReturn(noticeRule);
-        Mockito.when(noticeConfigService.getNoticeRulesById(6565463543L))
+        when(noticeConfigService.getNoticeRulesById(6565463543L))
                 .thenReturn(null);
 
 
-        
this.mockMvc.perform(MockMvcRequestBuilders.delete("/api/notice/rule/{id}", 
6565463543L))
+        this.mockMvc.perform(delete("/api/notice/rule/{id}", 6565463543L))
                 .andExpect(status().isOk())
                 .andExpect(jsonPath("$.code").value((int) 
CommonConstants.SUCCESS_CODE))
                 .andExpect(jsonPath("$.msg").value("The specified notification 
rule could not be queried, please check whether the parameters are correct"))
                 .andReturn();
 
-        
this.mockMvc.perform(MockMvcRequestBuilders.delete("/api/notice/rule/{id}", 
7565463543L))
+        this.mockMvc.perform(delete("/api/notice/rule/{id}", 7565463543L))
                 .andExpect(status().isOk())
                 .andExpect(jsonPath("$.code").value((int) 
CommonConstants.SUCCESS_CODE))
                 .andExpect(jsonPath("$.msg").value("Delete success"))
@@ -238,10 +243,10 @@ class NoticeConfigControllerTest {
     @Test
     void sendTestMsg() throws Exception {
         NoticeReceiver noticeReceiver = getNoticeReceiver();
-        Mockito.when(noticeConfigService.sendTestMsg(noticeReceiver))
+        when(noticeConfigService.sendTestMsg(noticeReceiver))
                 .thenReturn(false);
 
-        
this.mockMvc.perform(MockMvcRequestBuilders.post("/api/notice/receiver/send-test-msg")
+        this.mockMvc.perform(post("/api/notice/receiver/send-test-msg")
                         .contentType(MediaType.APPLICATION_JSON)
                         .content(JsonUtil.toJson(noticeReceiver)))
                 .andExpect(status().isOk())
@@ -250,10 +255,10 @@ class NoticeConfigControllerTest {
                 .andReturn();
 
 
-        Mockito.when(noticeConfigService.sendTestMsg(noticeReceiver))
+        when(noticeConfigService.sendTestMsg(noticeReceiver))
                 .thenReturn(true);
 
-        
this.mockMvc.perform(MockMvcRequestBuilders.post("/api/notice/receiver/send-test-msg")
+        this.mockMvc.perform(post("/api/notice/receiver/send-test-msg")
                         .contentType(MediaType.APPLICATION_JSON)
                         .content(JsonUtil.toJson(noticeReceiver)))
                 .andExpect(status().isOk())
@@ -261,4 +266,100 @@ class NoticeConfigControllerTest {
                 //.andExpect(jsonPath("$.msg").value("Notify service not 
available, please check config!"))
                 .andReturn();
     }
+
+    @Test
+    void addNewNoticeTemplate() throws Exception {
+        NoticeTemplate noticeTemplate = getNoticeTemplate();
+        
doNothing().when(noticeConfigService).addNoticeTemplate(noticeTemplate);
+
+        this.mockMvc.perform(post("/api/notice/template")
+                        .contentType(MediaType.APPLICATION_JSON)
+                        .content(JsonUtil.toJson(noticeTemplate)))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.code").value((int) 
CommonConstants.SUCCESS_CODE))
+                .andExpect(jsonPath("$.msg").value("Add success"))
+                .andReturn();
+
+        verify(noticeConfigService).addNoticeTemplate(noticeTemplate);
+    }
+
+    @Test
+    void editNoticeTemplate() throws Exception {
+        NoticeTemplate noticeTemplate = getNoticeTemplate();
+        
doNothing().when(noticeConfigService).editNoticeTemplate(noticeTemplate);
+
+        this.mockMvc.perform(put("/api/notice/template")
+                        .contentType(MediaType.APPLICATION_JSON)
+                        .content(JsonUtil.toJson(noticeTemplate)))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.code").value((int) 
CommonConstants.SUCCESS_CODE))
+                .andExpect(jsonPath("$.msg").value("Edit success"))
+                .andReturn();
+
+        verify(noticeConfigService).editNoticeTemplate(noticeTemplate);
+    }
+
+    @Test
+    void deleteNoticeTemplate_Success() throws Exception {
+        Long templateId = 1L;
+        
when(noticeConfigService.getNoticeTemplatesById(templateId)).thenReturn(Optional.of(new
 NoticeTemplate()));
+
+        mockMvc.perform(delete("/api/notice/template/{id}", templateId))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.code").value((int) 
CommonConstants.SUCCESS_CODE))
+                .andExpect(jsonPath("$.msg").value("Delete success"));
+
+        Mockito.verify(noticeConfigService, 
Mockito.times(1)).deleteNoticeTemplate(templateId);
+    }
+
+    @Test
+    void deleteNoticeTemplate_NotFound() throws Exception {
+        Long templateId = 1L;
+        
when(noticeConfigService.getNoticeTemplatesById(templateId)).thenReturn(Optional.empty());
+
+        mockMvc.perform(delete("/api/notice/template/{id}", templateId))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.code").value((int) 
CommonConstants.SUCCESS_CODE))
+                .andExpect(jsonPath("$.msg").value("The specified notification 
template could not be queried, please check whether the parameters are 
correct"));
+
+        Mockito.verify(noticeConfigService, 
Mockito.never()).deleteNoticeTemplate(templateId);
+    }
+
+    @Test
+    void testGetTemplates() throws Exception {
+        // Mock the service response
+        NoticeTemplate template1 = new NoticeTemplate();
+        template1.setName("Template1");
+        NoticeTemplate template2 = new NoticeTemplate();
+        template2.setName("Template2");
+        List<NoticeTemplate> templates = Arrays.asList(template1, template2);
+        
when(noticeConfigService.getNoticeTemplates(any())).thenReturn(templates);
+
+        // Perform the GET request and verify the response
+        this.mockMvc.perform(get("/api/notice/templates")
+                        .param("name", "Template"))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.code").value((int) 
CommonConstants.SUCCESS_CODE))
+                .andExpect(jsonPath("$.data[0].name").value("Template1"))
+                .andExpect(jsonPath("$.data[1].name").value("Template2"));
+    }
+
+    @Test
+    void sendTestMsg_Failure() throws Exception {
+        NoticeReceiver noticeReceiver = getNoticeReceiver();
+        
when(noticeConfigService.sendTestMsg(noticeReceiver)).thenReturn(false);
+
+        this.mockMvc.perform(post("/api/notice/receiver/send-test-msg")
+                        .contentType(MediaType.APPLICATION_JSON)
+                        .content(JsonUtil.toJson(noticeReceiver)))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.code").value((int) 
CommonConstants.FAIL_CODE))
+                .andExpect(jsonPath("$.msg").value("Notify service not 
available, please check config!"))
+                .andReturn();
+
+        verify(noticeConfigService, times(1)).sendTestMsg(noticeReceiver);
+    }
+
+
+
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to