class TestEmailAlerts(LocalTestCase): def setUp(self): super(TestEmailAlerts, self).setUp() self.user_profile = UserProfile(user=self.user) self.user_profile.save() self.user_profile.user.email = "*****@*****.**" self.user_profile.user.save() self.service.users_to_notify.add(self.user) self.service.save() update_alert_plugins() self.email_alert = models.EmailAlert.objects.get( title=models.EmailAlert.name) self.email_alert.save() self.service.alerts.add(self.email_alert) self.service.save() self.service.update_status() def test_model_attributes(self): self.assertEqual(self.service.users_to_notify.all().count(), 1) self.assertEqual( self.service.users_to_notify.get(pk=1).username, self.user.username) self.assertEqual(self.service.alerts.all().count(), 1) @patch('cabot_alert_email.models.send_mail') def test_send_mail(self, fake_send_mail): self.service.overall_status = Service.PASSING_STATUS self.service.old_overall_status = Service.ERROR_STATUS self.service.save() self.service.alert() fake_send_mail.assert_called_with( message= u'Service Service http://localhost/service/1/ is back to normal.\n\n', subject='Service back to normal: Service', recipient_list=[u'*****@*****.**'], from_email='Cabot <*****@*****.**>') @patch('cabot_alert_email.models.send_mail') def test_failure_alert(self, fake_send_mail): # Most recent failed self.service.overall_status = Service.CALCULATED_FAILING_STATUS self.service.old_overall_status = Service.PASSING_STATUS self.service.save() self.service.alert() fake_send_mail.assert_called_with( message= u'Service Service http://localhost/service/1/ alerting with status: failing.\n\nCHECKS FAILING:\n\nPassing checks:\n PASSING - Graphite Check - Type: Metric check - Importance: Error\n PASSING - Http Check - Type: HTTP check - Importance: Critical\n PASSING - Jenkins Check - Type: Jenkins check - Importance: Error\n\n\n', subject='failing status for service: Service', recipient_list=[u'*****@*****.**'], from_email='Cabot <*****@*****.**>')
class TestHipchatAlerts(LocalTestCase): def setUp(self): super(TestHipchatAlerts, self).setUp() self.user_profile = UserProfile(user=self.user) self.user_profile.save() self.hipchat_user_data = models.HipchatAlertUserData.objects.create( hipchat_alias="test_user_hipchat_alias", user=self.user_profile, title=models.HipchatAlertUserData.name, ) self.hipchat_user_data.save() self.service.users_to_notify.add(self.user) self.service.hipchat_room_id = 12 update_alert_plugins() self.hipchat_plugin = models.HipchatAlert.objects.get( title=models.HipchatAlert.name) self.service.alerts.add(self.hipchat_plugin) self.service.save() self.service.update_status() def test_users_to_notify(self): self.assertEqual(self.service.users_to_notify.all().count(), 1) self.assertEqual( self.service.users_to_notify.get(pk=1).username, self.user.username) @patch('cabot_alert_hipchat.models.HipchatAlert._send_hipchat_alert') def test_normal_alert(self, fake_hipchat_alert): self.service.overall_status = Service.PASSING_STATUS self.service.old_overall_status = Service.ERROR_STATUS self.service.save() self.service.alert() fake_hipchat_alert.assert_called_with( u'Service Service is back to normal: http://localhost/service/1/. @test_user_hipchat_alias', self.service, color='green', sender='Cabot/Service') @patch('cabot_alert_hipchat.models.HipchatAlert._send_hipchat_alert') def test_failure_alert(self, fake_hipchat_alert): # Most recent failed self.service.overall_status = Service.CALCULATED_FAILING_STATUS self.service.old_overall_status = Service.PASSING_STATUS self.service.save() self.service.alert() fake_hipchat_alert.assert_called_with( u'Service Service reporting failing status: http://localhost/service/1/. Checks failing: @test_user_hipchat_alias', self.service, color='red', sender='Cabot/Service')
class TestSlackAlerts(LocalTestCase): def setUp(self): super(TestSlackAlerts, self).setUp() self.user_profile = UserProfile(user=self.user) self.user_profile.save() self.slack_user_data = models.SlackAlertUserData.objects.create( slack_alias = "test_user_slack_alias", user = self.user_profile, title=models.SlackAlertUserData.name, ) self.slack_user_data.save() self.service.users_to_notify.add(self.user) update_alert_plugins() self.slack_plugin = models.SlackAlert.objects.get(title=models.SlackAlert.name) self.service.alerts.add(self.slack_plugin) self.service.save() self.service.update_status() def test_users_to_notify(self): self.assertEqual(self.service.users_to_notify.all().count(), 1) self.assertEqual(self.service.users_to_notify.get(pk=1).username, self.user.username) @patch('cabot_alert_slack.models.SlackAlert._send_slack_alert') def test_normal_alert(self, fake_slack_alert): self.service.overall_status = Service.PASSING_STATUS self.service.old_overall_status = Service.ERROR_STATUS self.service.save() self.service.alert() fake_slack_alert.assert_called_with(u'Service Service is back to normal: http://localhost/service/1/. @test_user_slack_alias', color='green', sender='Cabot/Service') @patch('cabot_alert_slack.models.SlackAlert._send_slack_alert') def test_failure_alert(self, fake_slack_alert): # Most recent failed self.service.overall_status = Service.CALCULATED_FAILING_STATUS self.service.old_overall_status = Service.PASSING_STATUS self.service.save() self.service.alert() fake_slack_alert.assert_called_with(u'Service Service reporting failing status: http://localhost/service/1/. Checks failing: @test_user_slack_alias', color='red', sender='Cabot/Service')