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 <*****@*****.**>')
示例#2
0
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')
    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()
示例#4
0
    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)

        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()
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')
    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()