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 ba70b2f26 [Improve] add WeComAppAlertNotifyHandlerImpl send notify
test (#2369)
ba70b2f26 is described below
commit ba70b2f269a23184c474372d864f88e7edd51a06
Author: YuLuo <[email protected]>
AuthorDate: Thu Jul 25 08:33:30 2024 +0800
[Improve] add WeComAppAlertNotifyHandlerImpl send notify test (#2369)
Signed-off-by: yuluo-yx <[email protected]>
Co-authored-by: tomsun28 <[email protected]>
---
.../impl/WeComAppAlertNotifyHandlerImpl.java | 8 +-
.../impl/WeComAppAlertNotifyHandlerImplTest.java | 110 +++++++++++++++++++++
2 files changed, 114 insertions(+), 4 deletions(-)
diff --git
a/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/impl/WeComAppAlertNotifyHandlerImpl.java
b/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/impl/WeComAppAlertNotifyHandlerImpl.java
index 62e6ff38d..6300b718e 100644
---
a/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/impl/WeComAppAlertNotifyHandlerImpl.java
+++
b/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/impl/WeComAppAlertNotifyHandlerImpl.java
@@ -123,7 +123,7 @@ public class WeComAppAlertNotifyHandlerImpl extends
AbstractAlertNotifyHandlerIm
@Data
@AllArgsConstructor
@NoArgsConstructor
- private static class WeChatAppReq {
+ protected static class WeChatAppReq {
@JsonProperty(value = "errcode")
private Integer errCode;
@@ -139,7 +139,7 @@ public class WeComAppAlertNotifyHandlerImpl extends
AbstractAlertNotifyHandlerIm
@Builder
@AllArgsConstructor
@NoArgsConstructor
- private static class WeChatAppDTO {
+ protected static class WeChatAppDTO {
/**
* markdown format
@@ -172,7 +172,7 @@ public class WeComAppAlertNotifyHandlerImpl extends
AbstractAlertNotifyHandlerIm
private MarkdownDTO markdown;
@Data
- private static class MarkdownDTO {
+ protected static class MarkdownDTO {
/**
* message content
*/
@@ -180,7 +180,7 @@ public class WeComAppAlertNotifyHandlerImpl extends
AbstractAlertNotifyHandlerIm
}
@Data
- private static class TextDTO {
+ protected static class TextDTO {
/**
* message content
*/
diff --git
a/manager/src/test/java/org/apache/hertzbeat/manager/component/alerter/impl/WeComAppAlertNotifyHandlerImplTest.java
b/manager/src/test/java/org/apache/hertzbeat/manager/component/alerter/impl/WeComAppAlertNotifyHandlerImplTest.java
index ae66e5688..cd1954719 100644
---
a/manager/src/test/java/org/apache/hertzbeat/manager/component/alerter/impl/WeComAppAlertNotifyHandlerImplTest.java
+++
b/manager/src/test/java/org/apache/hertzbeat/manager/component/alerter/impl/WeComAppAlertNotifyHandlerImplTest.java
@@ -17,9 +17,119 @@
package org.apache.hertzbeat.manager.component.alerter.impl;
+import java.net.URI;
+
+import org.apache.hertzbeat.common.entity.alerter.Alert;
+import org.apache.hertzbeat.common.entity.manager.NoticeReceiver;
+import org.apache.hertzbeat.common.entity.manager.NoticeTemplate;
+import org.apache.hertzbeat.manager.support.exception.AlertNoticeException;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
/**
* test case for {@link WeComAppAlertNotifyHandlerImpl}
*/
+@ExtendWith(MockitoExtension.class)
class WeComAppAlertNotifyHandlerImplTest {
+
+ @InjectMocks
+ private WeComAppAlertNotifyHandlerImpl weComAppAlertNotifyHandler;
+
+ @Mock
+ private RestTemplate restTemplate;
+
+ private NoticeReceiver receiver;
+
+ private NoticeTemplate noticeTemplate;
+
+ private Alert alert;
+
+ @BeforeEach
+ void setUp() {
+
+ receiver = new NoticeReceiver();
+ receiver.setCorpId("testCorpId");
+ receiver.setAgentId(1000001);
+ receiver.setAppSecret("testAppSecret");
+ receiver.setUserId("testUserId");
+ receiver.setPartyId("testPartyId");
+ receiver.setTagId("testTagId");
+
+ noticeTemplate = mock(NoticeTemplate.class);
+ when(noticeTemplate.getContent()).thenReturn("This is a test
notice template.");
+
+ alert = new Alert();
+ alert.setId(1L);
+ alert.setLastAlarmTime(System.currentTimeMillis());
+ alert.setContent("This is a test alert.");
+
+ weComAppAlertNotifyHandler = new
WeComAppAlertNotifyHandlerImpl(restTemplate);
+ }
+
+ @Test
+ void testSendSuccess() throws AlertNoticeException {
+
+ WeComAppAlertNotifyHandlerImpl.WeChatAppReq tokenResponse = new
WeComAppAlertNotifyHandlerImpl.WeChatAppReq();
+ tokenResponse.setAccessToken("testAccessToken");
+ when(restTemplate.getForEntity(
+ anyString(),
+
eq(WeComAppAlertNotifyHandlerImpl.WeChatAppReq.class)
+ )).thenReturn(ResponseEntity.ok(tokenResponse));
+
+ WeComAppAlertNotifyHandlerImpl.WeChatAppReq sendResponse = new
WeComAppAlertNotifyHandlerImpl.WeChatAppReq();
+ sendResponse.setErrCode(0);
+ sendResponse.setErrMsg("ok");
+ when(restTemplate.postForEntity(
+ anyString(),
+ any(HttpEntity.class),
+
eq(WeComAppAlertNotifyHandlerImpl.WeChatAppReq.class)
+ )).thenReturn(ResponseEntity.ok(sendResponse));
+
+ weComAppAlertNotifyHandler.send(receiver, noticeTemplate,
alert);
+
+ verify(restTemplate, times(1)).getForEntity(anyString(),
eq(WeComAppAlertNotifyHandlerImpl.WeChatAppReq.class));
+ verify(restTemplate, times(1)).postForEntity(anyString(),
any(HttpEntity.class), eq(WeComAppAlertNotifyHandlerImpl.WeChatAppReq.class));
+ }
+
+ @Test
+ void testSendFail() {
+
+ WeComAppAlertNotifyHandlerImpl.WeChatAppReq tokenResponse = new
WeComAppAlertNotifyHandlerImpl.WeChatAppReq();
+ tokenResponse.setErrCode(40013);
+ tokenResponse.setErrMsg("invalid corpid");
+ when(restTemplate.getForEntity(
+ anyString(),
+
eq(WeComAppAlertNotifyHandlerImpl.WeChatAppReq.class)
+ )).thenReturn(ResponseEntity.ok(tokenResponse));
+
+ Assertions.assertThrows(
+ AlertNoticeException.class,
+ () -> weComAppAlertNotifyHandler.send(receiver,
noticeTemplate, alert)
+ );
+
+ verify(restTemplate, never()).postForEntity(
+ any(URI.class),
+ any(HttpEntity.class),
+
eq(WeComAppAlertNotifyHandlerImpl.WeChatAppReq.class)
+ );
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]