Ejemplo n.º 1
0
    def test_notify_users_does_email(self, _send_mail):
        project = Project(id=1, name='Project Name')

        group = Mock(spec=Group)
        group.first_seen = datetime.datetime.now()
        group.project_id = project.id
        group.project = project
        group.id = 2

        event = Event()
        event.message = 'hello world'
        event.logger = 'root'
        event.site = None
        event.project_id = project.id
        event.project = project

        with self.Settings(SENTRY_URL_PREFIX='http://example.com'):
            p = MailProcessor(send_to=['*****@*****.**'])
            p.notify_users(group, event)

        _send_mail.assert_called_once()
        args, kwargs = _send_mail.call_args
        self.assertEquals(kwargs.get('fail_silently'), False)
        self.assertEquals(kwargs.get('project'), project)
        self.assertEquals(kwargs.get('subject'), u"[Project Name] ERROR: hello world")
Ejemplo n.º 2
0
    def test_should_mail(self):
        Mock = mock.Mock
        with mock.patch("sentry.models.ProjectOption.objects.get_value") as get_value:
            get_value.side_effect = lambda p, k, d: d

            # no admins
            p = MailProcessor(send_to=())
            self.assertFalse(p.should_mail(group=Mock(), event=Mock()))

            # not min level
            p = MailProcessor(send_to=["*****@*****.**"], min_level=2)
            group = Mock()
            group.level = 1
            self.assertFalse(p.should_mail(group=group, event=Mock()))

            # not in inclusion
            p = MailProcessor(send_to=["*****@*****.**"], min_level=None, include_loggers=["foo"])
            group = Mock()
            group.level = 5
            group.logger = "root"
            self.assertFalse(p.should_mail(group=group, event=Mock()))

            # in exclusion
            p = MailProcessor(send_to=["*****@*****.**"], min_level=None, exclude_loggers=["root"])
            group = Mock()
            group.level = 5
            group.logger = "root"
            self.assertFalse(p.should_mail(group=group, event=Mock()))

            # in exclusion
            p = MailProcessor(send_to=["*****@*****.**"], min_level=None)
            group = Mock()
            group.level = 5
            group.logger = "root"
            self.assertTrue(p.should_mail(group=group, event=Mock()))
Ejemplo n.º 3
0
    def test_mail_members_renders_interfaces(self, _send_mail):
        group = Mock(spec=Group)
        group.first_seen = datetime.datetime.now()
        group.get_absolute_url.return_value = '/example'
        stacktrace = Mock(spec=Stacktrace)
        stacktrace.to_string.return_value = 'foo bar'
        stacktrace.get_title.return_value = 'Stacktrace'
        event = Event()
        event.message = 'hello world'
        event.logger = 'root'
        event.site = None
        event.interfaces = {'sentry.interfaces.Stacktrace': stacktrace}

        with self.Settings(SENTRY_URL_PREFIX='http://example.com'):
            p = MailProcessor(send_to=['*****@*****.**'])
            p.mail_members(group, event)

        stacktrace.get_title.assert_called_once_with()
        stacktrace.to_string.assert_called_once_with(event)
Ejemplo n.º 4
0
    def test_notify_users_renders_interfaces_with_utf8(self, _send_mail):
        group = Mock(spec=Group)
        group.first_seen = datetime.datetime.now()
        group.project_id = 1
        group.id = 2
        stacktrace = Mock(spec=Stacktrace)
        stacktrace.to_string.return_value = u'רונית מגן'
        stacktrace.get_title.return_value = 'Stacktrace'
        event = Event()
        event.message = 'hello world'
        event.logger = 'root'
        event.site = None
        event.interfaces = {'sentry.interfaces.Stacktrace': stacktrace}

        with self.Settings(SENTRY_URL_PREFIX='http://example.com'):
            p = MailProcessor(send_to=['*****@*****.**'])
            p.notify_users(group, event)

        stacktrace.get_title.assert_called_once_with()
        stacktrace.to_string.assert_called_once_with(event)
Ejemplo n.º 5
0
    def test_multiline_error(self, _send_mail):
        project = Project(id=1, name='Project Name')

        group = Group()
        group.first_seen = datetime.datetime.now()
        group.last_seen = group.first_seen
        group.project = project
        group.id = 2

        event = Event()
        event.group = group
        event.message = 'hello world\nfoo bar'
        event.logger = 'root'
        event.project = project
        event.date = group.last_seen

        with self.Settings(SENTRY_URL_PREFIX='http://example.com'):
            p = MailProcessor(send_to=['*****@*****.**'])
            p.notify_users(group, event)

        _send_mail.assert_called_once()
        args, kwargs = _send_mail.call_args
        self.assertEquals(kwargs.get('subject'), u"[Project Name] ERROR: hello world")
Ejemplo n.º 6
0
 def test_should_notify_match(self):
     p = MailProcessor(min_level=None)
     group = Mock(spec=Group)
     group.level = 5
     group.logger = 'root'
     self.assertTrue(p.should_notify(group=group, event=Mock()))
Ejemplo n.º 7
0
 def test_should_notify_excluded(self):
     p = MailProcessor(min_level=None, exclude_loggers=['root'])
     group = Mock(spec=Group)
     group.level = 5
     group.logger = 'root'
     self.assertFalse(p.should_notify(group=group, event=Mock()))
Ejemplo n.º 8
0
 def test_should_notify_not_min_level(self):
     p = MailProcessor(min_level=2)
     group = Mock(spec=Group)
     group.level = 1
     self.assertFalse(p.should_notify(group=group, event=Mock()))
Ejemplo n.º 9
0
 def test_should_notify_no_send_to(self):
     p = MailProcessor()
     self.assertFalse(p.should_notify(group=Mock(), event=Mock()))
Ejemplo n.º 10
0
    def test_send_to(self):
        Mock = mock.Mock
        with mock.patch('sentry.models.ProjectOption.objects.get_value') as get_value:
            opts = {}
            get_value.side_effect = lambda p, k, d: opts.get(k, d)

            admins = ['*****@*****.**']
            member_emails = ['*****@*****.**', '*****@*****.**']
            project_emails = ['*****@*****.**', '*****@*****.**']

            project = Mock()
            project.member_set = Mock()
            project.member_set.values_list.return_value = member_emails

            with self.Settings(SENTRY_ADMINS=admins):
                # member emails without admins
                p = MailProcessor()
                self.assertEqual(sorted(set(member_emails)),
                                 sorted(p.get_send_to(project)))

                # member emails with members
                p = MailProcessor()
                opts = {'mail:send_to_admins': True}
                p._send_mail('', '', project=project)
                self.assertEqual(sorted(set(member_emails + admins)),
                                 sorted(p.get_send_to(project)))

                # project emails without members
                p = MailProcessor()
                opts = {'mail:send_to': ','.join(project_emails),
                        'mail:send_to_members': False}
                p._send_mail('', '', project=project)
                self.assertEqual(sorted(set(project_emails)),
                                 sorted(p.get_send_to(project)))

                # project emails with members
                p = MailProcessor()
                opts = {'mail:send_to': ','.join(project_emails),
                        'mail:send_to_members': False,
                        'mail:send_to_admins': True}
                p._send_mail('', '', project=project)
                self.assertEqual(sorted(set(project_emails + admins)),
                                 sorted(p.get_send_to(project)))

                # project emails with members and admins
                p = MailProcessor()
                opts = {'mail:send_to': ','.join(project_emails),
                        'mail:send_to_members': True,
                        'mail:send_to_admins': True}
                p._send_mail('', '', project=project)
                self.assertEqual(sorted(set(project_emails + admins + member_emails)),
                                 sorted(p.get_send_to(project)))
Ejemplo n.º 11
0
 def test_should_mail_not_included(self):
     p = MailProcessor(min_level=None, include_loggers=['foo'])
     group = Mock(spec=Group)
     group.level = 5
     group.logger = 'root'
     self.assertFalse(p.should_mail(group=group, event=Mock()))