@Test(expectedExceptions = IllegalArgumentException.class) public void htmlBodyIsEmpty() throws Exception { try { mailSender.smtpEnabled = true; mailSender.sendEMail("subject", "", "textBody", Arrays.asList("three@example.com")); } finally { verifyZeroInteractions(mailMock, transportMock, objectFactoryMock); } }
@Test(expectedExceptions = IllegalArgumentException.class) public void subjectIsEmpty() throws Exception { try { mailSender.smtpEnabled = true; mailSender.sendEMail("", "htmlBody", "textBody", Arrays.asList("three@example.com")); } finally { verifyZeroInteractions(mailMock, transportMock, objectFactoryMock); } }
@Test(expectedExceptions = IllegalArgumentException.class) public void subjectIsNull() throws Exception { try { mailSender.smtpEnabled = true; mailSender.sendEMail(null, "htmlBody", "textBody", Arrays.asList("three@example.com")); } finally { verifyZeroInteractions(mailMock, transportMock, objectFactoryMock); } }
@Test(expectedExceptions = IllegalArgumentException.class) public void textBodyIsNull() throws Exception { try { mailSender.smtpEnabled = true; mailSender.sendEMail("subject", "htmlBody", null, Arrays.asList("three@example.com")); } finally { verifyZeroInteractions(mailMock, transportMock, objectFactoryMock); } }
@Test(expectedExceptions = IllegalArgumentException.class) public void htmlBodyIsNull() throws Exception { try { mailSender.smtpEnabled = true; mailSender.sendEMail("subject", null, "textBody", Arrays.asList("three@example.com")); } finally { verifyZeroInteractions(mailMock, transportMock, objectFactoryMock); } }
@Test(expectedExceptions = IllegalArgumentException.class) public void textBodyIsEmpty() throws Exception { try { mailSender.smtpEnabled = true; mailSender.sendEMail("subject", "htmlBody", "", Arrays.asList("three@example.com")); } finally { verifyZeroInteractions(mailMock, transportMock, objectFactoryMock); } } }
@Test public void notConnected() { mailSender.smtpEnabled = true; boolean result = mailSender.sendEMail("subject", "htmlBody", "textBody", Arrays.asList("one@example.com")); assertThat(result, is(false)); assertThat(mailSender.getServiceStatus(), is(ExternalServiceStatus.DISCONNECTED)); verifyZeroInteractions(mailMock); verifyZeroInteractions(transportMock); verifyZeroInteractions(objectFactoryMock); }
@Test public void emptyRecipients() throws Exception { Session session = Session.getInstance(new Properties()); when(mailMock.getMailSession()).thenReturn(session); when(objectFactoryMock.createHtmlEmail()).thenReturn(mailMock); when(objectFactoryMock.getSmtpTransport()).thenReturn(transportMock); mailSender.defaultRecipientString = ""; mailSender.smtpHost = "host"; mailSender.smtpPort = 25; mailSender.smtpUser = "user"; mailSender.smtpPassword = "passwd"; mailSender.senderAddress = "sender@example.com"; mailSender.senderName = "Sender Name"; mailSender.smtpEnabled = true; mailSender.init(); boolean result = mailSender.sendEMail("subject", "htmlBody", "textBody", Collections.emptyList()); assertThat(result, is(false)); assertThat(mailSender.getServiceStatus(), is(ExternalServiceStatus.CONNECTED)); }
@Test public void badSmtpPort() throws Exception { doThrow(IllegalArgumentException.class).when(mailMock).setSmtpPort(-1); when(objectFactoryMock.createHtmlEmail()).thenReturn(mailMock); when(objectFactoryMock.getSmtpTransport()).thenReturn(transportMock); mailSender.smtpHost = "host"; mailSender.smtpPort = -1; mailSender.smtpEnabled = true; mailSender.init(); boolean result = mailSender.sendEMail("subject", "htmlBody", "textBody", Arrays.asList("one@example.com")); assertThat(result, is(false)); verify(objectFactoryMock).getSmtpTransport(); verify(objectFactoryMock).createHtmlEmail(); verify(transportMock).connect(any(String.class), any(Integer.class), any(String.class), any(String.class)); verify(transportMock).close(); verify(mailMock).setHostName("host"); verify(mailMock).setSmtpPort(-1); verifyNoMoreInteractions(objectFactoryMock, transportMock, mailMock); }
@Test @SuppressWarnings({ "unchecked", "rawtypes" }) public void onStartNoBtx() throws IOException { when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingDefinition.getName()).thenReturn("myName"); when(alertingDefinition.getNotificationEmailAddresses()).thenReturn(Arrays.asList("test@example.com")); when(templateResolver.resolveTemplate(AlertEMailTemplateType.HTML_ALERT_OPEN, alertingState)).thenReturn("htmlBody"); when(templateResolver.resolveTemplate(AlertEMailTemplateType.TXT_ALERT_OPEN, alertingState)).thenReturn("textBody"); emailAction.onStarting(alertingState); verify(alertingDefinition).getName(); verify(alertingDefinition).getMeasurement(); verify(alertingDefinition).getNotificationEmailAddresses(); verifyNoMoreInteractions(alertingDefinition); verify(alertingState, times(3)).getAlertingDefinition(); verifyNoMoreInteractions(alertingState); verify(templateResolver).resolveTemplate(AlertEMailTemplateType.HTML_ALERT_OPEN, alertingState); verify(templateResolver).resolveTemplate(AlertEMailTemplateType.TXT_ALERT_OPEN, alertingState); verifyNoMoreInteractions(templateResolver); ArgumentCaptor<String> captorSubject = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> captorHtmlBody = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> captorTextBody = ArgumentCaptor.forClass(String.class); ArgumentCaptor<List> captorRecipients = ArgumentCaptor.forClass(List.class); verify(emailSender).sendEMail(captorSubject.capture(), captorHtmlBody.capture(), captorTextBody.capture(), captorRecipients.capture()); assertThat(captorHtmlBody.getValue(), equalTo("htmlBody")); assertThat(captorTextBody.getValue(), equalTo("textBody")); assertThat(captorSubject.getValue(), containsString("myName")); assertThat((List<String>) captorRecipients.getValue(), hasItem("test@example.com")); verifyNoMoreInteractions(emailSender); }
@Test @SuppressWarnings({ "unchecked", "rawtypes" }) public void onEndNoBtx() throws IOException { when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingDefinition.getName()).thenReturn("myName"); when(alertingDefinition.getNotificationEmailAddresses()).thenReturn(Arrays.asList("test@example.com")); when(templateResolver.resolveTemplate(AlertEMailTemplateType.HTML_ALERT_CLOSED, alertingState)).thenReturn("htmlBody"); when(templateResolver.resolveTemplate(AlertEMailTemplateType.TXT_ALERT_CLOSED, alertingState)).thenReturn("textBody"); emailAction.onEnding(alertingState); verify(alertingDefinition).getName(); verify(alertingDefinition).getMeasurement(); verify(alertingDefinition).getNotificationEmailAddresses(); verifyNoMoreInteractions(alertingDefinition); verify(alertingState, times(3)).getAlertingDefinition(); verifyNoMoreInteractions(alertingState); verify(templateResolver).resolveTemplate(AlertEMailTemplateType.HTML_ALERT_CLOSED, alertingState); verify(templateResolver).resolveTemplate(AlertEMailTemplateType.TXT_ALERT_CLOSED, alertingState); verifyNoMoreInteractions(templateResolver); ArgumentCaptor<String> captorSubject = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> captorHtmlBody = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> captorTextBody = ArgumentCaptor.forClass(String.class); ArgumentCaptor<List> captorRecipients = ArgumentCaptor.forClass(List.class); verify(emailSender).sendEMail(captorSubject.capture(), captorHtmlBody.capture(), captorTextBody.capture(), captorRecipients.capture()); assertThat(captorHtmlBody.getValue(), equalTo("htmlBody")); assertThat(captorTextBody.getValue(), equalTo("textBody")); assertThat(captorSubject.getValue(), containsString("myName")); assertThat((List<String>) captorRecipients.getValue(), hasItem("test@example.com")); verifyNoMoreInteractions(emailSender); }
@Test @SuppressWarnings({ "unchecked", "rawtypes" }) public void onStartUseDefaultName() throws IOException { when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingDefinition.getNotificationEmailAddresses()).thenReturn(Arrays.asList("test@example.com")); when(templateResolver.resolveTemplate(AlertEMailTemplateType.HTML_ALERT_OPEN, alertingState)).thenReturn("htmlBody"); when(templateResolver.resolveTemplate(AlertEMailTemplateType.TXT_ALERT_OPEN, alertingState)).thenReturn("textBody"); emailAction.onStarting(alertingState); verify(alertingDefinition).getName(); verify(alertingDefinition).getMeasurement(); verify(alertingDefinition).getNotificationEmailAddresses(); verifyNoMoreInteractions(alertingDefinition); verify(alertingState, times(3)).getAlertingDefinition(); verifyNoMoreInteractions(alertingState); verify(templateResolver).resolveTemplate(AlertEMailTemplateType.HTML_ALERT_OPEN, alertingState); verify(templateResolver).resolveTemplate(AlertEMailTemplateType.TXT_ALERT_OPEN, alertingState); verifyNoMoreInteractions(templateResolver); ArgumentCaptor<String> captorSubject = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> captorHtmlBody = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> captorTextBody = ArgumentCaptor.forClass(String.class); ArgumentCaptor<List> captorRecipients = ArgumentCaptor.forClass(List.class); verify(emailSender).sendEMail(captorSubject.capture(), captorHtmlBody.capture(), captorTextBody.capture(), captorRecipients.capture()); assertThat(captorHtmlBody.getValue(), equalTo("htmlBody")); assertThat(captorTextBody.getValue(), equalTo("textBody")); assertThat(captorSubject.getValue(), containsString(EmailAlertAction.DEFAULT_ALERTING_NAME)); assertThat((List<String>) captorRecipients.getValue(), hasItem("test@example.com")); verifyNoMoreInteractions(emailSender); }
@Test @SuppressWarnings({ "unchecked", "rawtypes" }) public void onEndUseDefaultName() throws IOException { when(alertingState.getAlertingDefinition()).thenReturn(alertingDefinition); when(alertingDefinition.getNotificationEmailAddresses()).thenReturn(Arrays.asList("test@example.com")); when(templateResolver.resolveTemplate(AlertEMailTemplateType.HTML_ALERT_CLOSED, alertingState)).thenReturn("htmlBody"); when(templateResolver.resolveTemplate(AlertEMailTemplateType.TXT_ALERT_CLOSED, alertingState)).thenReturn("textBody"); emailAction.onEnding(alertingState); verify(alertingDefinition).getName(); verify(alertingDefinition).getMeasurement(); verify(alertingDefinition).getNotificationEmailAddresses(); verifyNoMoreInteractions(alertingDefinition); verify(alertingState, times(3)).getAlertingDefinition(); verifyNoMoreInteractions(alertingState); verify(templateResolver).resolveTemplate(AlertEMailTemplateType.HTML_ALERT_CLOSED, alertingState); verify(templateResolver).resolveTemplate(AlertEMailTemplateType.TXT_ALERT_CLOSED, alertingState); verifyNoMoreInteractions(templateResolver); ArgumentCaptor<String> captorSubject = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> captorHtmlBody = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> captorTextBody = ArgumentCaptor.forClass(String.class); ArgumentCaptor<List> captorRecipients = ArgumentCaptor.forClass(List.class); verify(emailSender).sendEMail(captorSubject.capture(), captorHtmlBody.capture(), captorTextBody.capture(), captorRecipients.capture()); assertThat(captorHtmlBody.getValue(), equalTo("htmlBody")); assertThat(captorTextBody.getValue(), equalTo("textBody")); assertThat(captorSubject.getValue(), containsString(EmailAlertAction.DEFAULT_ALERTING_NAME)); assertThat((List<String>) captorRecipients.getValue(), hasItem("test@example.com")); verifyNoMoreInteractions(emailSender); }
/** * {@inheritDoc} */ @Override public void onStarting(AlertingState alertingState) { if (alertingState == null) { throw new IllegalArgumentException("The given alerting state may not be null"); } if (log.isDebugEnabled()) { log.debug("||-Sending e-mail because of starting an alert specified by: {}", alertingState.getAlertingDefinition().toString()); } try { String subject = "Alert - Threshold '" + getAlertingName(alertingState) + "' violated"; String htmlBody; String textBody; if (AlertingUtils.isBusinessTransactionAlert(alertingState.getAlertingDefinition())) { htmlBody = templateResolver.resolveTemplate(AlertEMailTemplateType.HTML_BUSINESS_TX_ALERT_OPEN, alertingState); textBody = templateResolver.resolveTemplate(AlertEMailTemplateType.TXT_BUSINESS_TX_ALERT_OPEN, alertingState); } else { htmlBody = templateResolver.resolveTemplate(AlertEMailTemplateType.HTML_ALERT_OPEN, alertingState); textBody = templateResolver.resolveTemplate(AlertEMailTemplateType.TXT_ALERT_OPEN, alertingState); } emailSender.sendEMail(subject, htmlBody, textBody, alertingState.getAlertingDefinition().getNotificationEmailAddresses()); } catch (IOException e) { if (log.isWarnEnabled()) { log.warn("Could not send starting alert e-mail!", e); } return; } }
/** * {@inheritDoc} */ @Override public void onEnding(AlertingState alertingState) { if (alertingState == null) { throw new IllegalArgumentException("The given alerting state may not be null"); } if (log.isDebugEnabled()) { log.debug("||-Sending e-mail because of alert '{}' has ended.", alertingState.getAlertingDefinition().getName()); } try { String subject = "Alert - Threshold '" + getAlertingName(alertingState) + "' has been closed"; String htmlBody; String textBody; if (AlertingUtils.isBusinessTransactionAlert(alertingState.getAlertingDefinition())) { htmlBody = templateResolver.resolveTemplate(AlertEMailTemplateType.HTML_BUSINESS_TX_ALERT_CLOSED, alertingState); textBody = templateResolver.resolveTemplate(AlertEMailTemplateType.TXT_BUSINESS_TX_ALERT_CLOSED, alertingState); } else { htmlBody = templateResolver.resolveTemplate(AlertEMailTemplateType.HTML_ALERT_CLOSED, alertingState); textBody = templateResolver.resolveTemplate(AlertEMailTemplateType.TXT_ALERT_CLOSED, alertingState); } emailSender.sendEMail(subject, htmlBody, textBody, alertingState.getAlertingDefinition().getNotificationEmailAddresses()); } catch (IOException e) { if (log.isWarnEnabled()) { log.warn("Could not send ending alert e-mail!", e); } return; } }
ArgumentCaptor<String> captorTextBody = ArgumentCaptor.forClass(String.class); ArgumentCaptor<List> captorRecipients = ArgumentCaptor.forClass(List.class); verify(emailSender).sendEMail(captorSubject.capture(), captorHtmlBody.capture(), captorTextBody.capture(), captorRecipients.capture()); assertThat(captorHtmlBody.getValue(), equalTo("htmlBody")); assertThat(captorTextBody.getValue(), equalTo("textBody"));
ArgumentCaptor<String> captorTextBody = ArgumentCaptor.forClass(String.class); ArgumentCaptor<List> captorRecipients = ArgumentCaptor.forClass(List.class); verify(emailSender).sendEMail(captorSubject.capture(), captorHtmlBody.capture(), captorTextBody.capture(), captorRecipients.capture()); assertThat(captorHtmlBody.getValue(), equalTo("htmlBody")); assertThat(captorTextBody.getValue(), equalTo("textBody"));
@Test public void badSenderAdress() throws Exception { when(objectFactoryMock.createHtmlEmail()).thenReturn(mailMock); when(objectFactoryMock.getSmtpTransport()).thenReturn(transportMock); doThrow(EmailException.class).when(mailMock).setFrom(eq("invalid"), any(String.class)); mailSender.defaultRecipientString = "one@example.com,two@example.com,invalid"; mailSender.smtpPropertiesString = "key1=val1,key2=val2,=noKey,noVal=,=,invalid"; mailSender.smtpHost = "host"; mailSender.smtpPort = 25; mailSender.smtpUser = "user"; mailSender.smtpPassword = "passwd"; mailSender.senderAddress = "invalid"; mailSender.senderName = "Sender Name"; mailSender.smtpEnabled = true; mailSender.init(); boolean result = mailSender.sendEMail("subject", "htmlBody", "textBody", Arrays.asList("three@example.com")); assertThat(result, is(false)); verify(objectFactoryMock).getSmtpTransport(); verify(objectFactoryMock).createHtmlEmail(); verify(transportMock).connect(any(String.class), any(Integer.class), any(String.class), any(String.class)); verify(transportMock).close(); verify(mailMock).setHostName("host"); verify(mailMock).setSmtpPort(25); verify(mailMock).setAuthentication("user", "passwd"); verify(mailMock).setFrom("invalid", "Sender Name"); verifyNoMoreInteractions(objectFactoryMock, transportMock, mailMock); }
mailSender.init(); boolean result = mailSender.sendEMail("subject", "htmlBody", "textBody", Arrays.asList("three@example.com"));
mailSender.init(); boolean result = mailSender.sendEMail("subject", "htmlBody", "textBody", Arrays.asList("three@example.com"));