2626import org .apache .cloudstack .utils .mailing .SMTPMailSender ;
2727import org .apache .logging .log4j .Logger ;
2828import org .junit .Assert ;
29+ import org .junit .Before ;
2930import org .junit .Test ;
3031import org .junit .runner .RunWith ;
32+ import org .mockito .ArgumentCaptor ;
3133import org .mockito .InjectMocks ;
3234import org .mockito .Mock ;
3335import org .mockito .Mockito ;
3739import javax .mail .MessagingException ;
3840import java .io .UnsupportedEncodingException ;
3941
42+ import static org .junit .Assert .assertEquals ;
43+ import static org .junit .Assert .assertNotNull ;
44+ import static org .junit .Assert .assertNull ;
45+ import static org .mockito .ArgumentMatchers .any ;
46+ import static org .mockito .Mockito .verify ;
47+
4048@ RunWith (MockitoJUnitRunner .class )
4149public class AlertManagerImplTest {
4250
@@ -45,7 +53,7 @@ public class AlertManagerImplTest {
4553 AlertManagerImpl alertManagerImplMock ;
4654
4755 @ Mock
48- AlertDao alertDaoMock ;
56+ AlertDao _alertDao ;
4957
5058 @ Mock
5159 private DataCenterDao _dcDao ;
@@ -65,7 +73,16 @@ public class AlertManagerImplTest {
6573 @ Mock
6674 SMTPMailSender mailSenderMock ;
6775
68- private void sendMessage (){
76+ private final String []
recipients =
new String []{
"[email protected] " };
77+ private final String senderAddress =
"[email protected] " ;
78+
79+ @ Before
80+ public void setUp () {
81+ alertManagerImplMock .recipients = recipients ;
82+ alertManagerImplMock .senderAddress = senderAddress ;
83+ }
84+
85+ private void sendMessage () {
6986 try {
7087 DataCenterVO zone = Mockito .mock (DataCenterVO .class );
7188 Mockito .when (zone .getId ()).thenReturn (0L );
@@ -77,46 +94,78 @@ private void sendMessage (){
7794 Mockito .when (cluster .getId ()).thenReturn (1L );
7895 Mockito .when (_clusterDao .findById (1L )).thenReturn (cluster );
7996
80- alertManagerImplMock .sendAlert (AlertManager .AlertType .ALERT_TYPE_CPU , 0 , 1l , 1l , "" , "" );
97+ alertManagerImplMock .sendAlert (AlertManager .AlertType .ALERT_TYPE_CPU , 0 , 1L , 1L , "" , "" );
8198 } catch (UnsupportedEncodingException | MessagingException e ) {
8299 Assert .fail ();
83100 }
84101 }
85102
86103 @ Test
87104 public void sendAlertTestSendMail () {
88- Mockito .doReturn (null ).when (alertDaoMock ).getLastAlert (Mockito .anyShort (), Mockito .anyLong (),
105+ Mockito .doReturn (null ).when (_alertDao ).getLastAlert (Mockito .anyShort (), Mockito .anyLong (),
89106 Mockito .anyLong (), Mockito .anyLong ());
90- Mockito .doReturn (null ).when (alertDaoMock ).persist (Mockito . any ());
91- alertManagerImplMock .recipients = new String [] {"" };
107+ Mockito .doReturn (null ).when (_alertDao ).persist (any ());
108+ alertManagerImplMock .recipients = new String [] {"" };
92109
93110 sendMessage ();
94111
95- Mockito .verify (alertManagerImplMock ).sendMessage (Mockito . any ());
112+ Mockito .verify (alertManagerImplMock ).sendMessage (any ());
96113 }
97114
98115 @ Test
99116 public void sendAlertTestDebugLogging () {
100117 Mockito .doReturn (0 ).when (alertVOMock ).getSentCount ();
101- Mockito .doReturn (alertVOMock ).when (alertDaoMock ).getLastAlert (Mockito .anyShort (), Mockito .anyLong (),
118+ Mockito .doReturn (alertVOMock ).when (_alertDao ).getLastAlert (Mockito .anyShort (), Mockito .anyLong (),
102119 Mockito .anyLong (), Mockito .anyLong ());
103120
104121 sendMessage ();
105122
106123 Mockito .verify (alertManagerImplMock .logger ).debug (Mockito .anyString ());
107- Mockito .verify (alertManagerImplMock , Mockito .never ()).sendMessage (Mockito . any ());
124+ Mockito .verify (alertManagerImplMock , Mockito .never ()).sendMessage (any ());
108125 }
109126
110127 @ Test
111128 public void sendAlertTestWarnLogging () {
112- Mockito .doReturn (null ).when (alertDaoMock ).getLastAlert (Mockito .anyShort (), Mockito .anyLong (),
129+ Mockito .doReturn (null ).when (_alertDao ).getLastAlert (Mockito .anyShort (), Mockito .anyLong (),
113130 Mockito .anyLong (), Mockito .anyLong ());
114- Mockito .doReturn (null ).when (alertDaoMock ).persist (Mockito .any ());
131+ Mockito .doReturn (null ).when (_alertDao ).persist (Mockito .any ());
115132 alertManagerImplMock .recipients = null ;
116133
117134 sendMessage ();
118135
119136 Mockito .verify (alertManagerImplMock .logger , Mockito .times (2 )).warn (Mockito .anyString ());
120- Mockito .verify (alertManagerImplMock , Mockito .never ()).sendMessage (Mockito .any ());
137+ Mockito .verify (alertManagerImplMock , Mockito .never ()).sendMessage (any ());
138+ }
139+
140+
141+ @ Test
142+ public void testSendAlertWithNullParameters () throws MessagingException , UnsupportedEncodingException {
143+ // Given
144+ String subject = "Test Subject" ;
145+ String content = "Test Content" ;
146+ AlertManager .AlertType alertType = AlertManager .AlertType .ALERT_TYPE_MEMORY ;
147+
148+ // When
149+ alertManagerImplMock .sendAlert (alertType , null , null , null , subject , content );
150+
151+ // Then
152+ ArgumentCaptor <AlertVO > alertCaptor = ArgumentCaptor .forClass (AlertVO .class );
153+ verify (_alertDao ).persist (alertCaptor .capture ());
154+
155+ AlertVO capturedAlert = alertCaptor .getValue ();
156+ assertNotNull ("Captured alert should not be null" , capturedAlert );
157+ assertEquals (0L , capturedAlert .getDataCenterId ());
158+ assertNull (capturedAlert .getPodId ());
159+ assertNull (capturedAlert .getClusterId ());
160+ assertEquals (subject , capturedAlert .getSubject ());
161+ assertEquals (content , capturedAlert .getContent ());
162+ assertEquals (alertType .getType (), capturedAlert .getType ());
163+ }
164+
165+
166+ @ Test (expected = NullPointerException .class )
167+ public void testSendAlertWithNullAlertType () throws MessagingException , UnsupportedEncodingException {
168+ // When
169+ alertManagerImplMock .sendAlert (null , 0 , 1L , 1L , "subject" , "content" );
121170 }
122171}
0 commit comments