示例#1
0
文件: tests.py 项目: yejinjian/sentry
    def test_notify_users_renders_interfaces_with_utf8_fix_issue_422(
            self, _send_mail):
        group = Group()
        group.first_seen = timezone.now()
        group.last_seen = group.first_seen
        group.id = 2
        group.project_id = 1

        stacktrace = Mock(spec=Stacktrace)
        stacktrace.to_string.return_value = u'רונית מגן'
        stacktrace.get_title.return_value = 'Stacktrace'

        event = Event()
        event.group = group
        event.message = 'Soubor ji\xc5\xbe existuje'
        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)
示例#2
0
文件: tests.py 项目: launch73/sentry
    def test_send_to(self, get_emails_for_users, get_sendable_users,
                     get_value):
        opts = {}

        member_emails = ['2', '3']
        project_emails = ['2', '4']

        get_value.side_effect = lambda p, k, d: opts.get(k, d)
        get_emails_for_users.side_effect = lambda x: x
        get_sendable_users.return_value = member_emails

        project = mock.Mock()
        project.id = 1
        project.pk = project.id

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

        # project emails without members
        opts = {
            'mail:send_to': ','.join(project_emails),
            'mail:send_to_members': False
        }
        self.assertEqual(sorted(set(project_emails)),
                         sorted(p.get_send_to(project)))
示例#3
0
文件: tests.py 项目: jacklme/sentry
    def test_notify_users_does_email(self, _send_mail):
        group = Group(
            id=2,
            first_seen=timezone.now(),
            last_seen=timezone.now(),
            project=self.project,
        )

        event = Event(
            group=group,
            message='hello world',
            logger='root',
            project=self.project,
            datetime=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('fail_silently'), False)
        self.assertEquals(kwargs.get('project'), self.project)
        assert kwargs.get('subject') == u"[{0}] ERROR: hello world".format(self.project.name)
示例#4
0
文件: tests.py 项目: yejinjian/sentry
    def test_get_sendable_users(self):
        from django.contrib.auth.models import User
        from sentry.models import Project, UserOption

        user = User.objects.create(username='******',
                                   email='*****@*****.**',
                                   is_active=True)
        user2 = User.objects.create(username='******',
                                    email='*****@*****.**',
                                    is_active=True)
        user3 = User.objects.create(username='******',
                                    email='*****@*****.**',
                                    is_active=False)
        project = Project.objects.create(name='Test', slug='test', owner=user)
        project.team.member_set.get_or_create(user=user)
        project.team.member_set.get_or_create(user=user2)
        project.team.member_set.get_or_create(user=user3)

        p = MailProcessor()

        # all members
        self.assertEqual(sorted(set([user.pk, user2.pk])),
                         sorted(p.get_sendable_users(project)))

        # disabled user2
        UserOption.objects.create(key='mail:alert',
                                  value=0,
                                  project=project,
                                  user=user2)
        self.assertEqual(sorted(set([user.pk])),
                         sorted(p.get_sendable_users(project)))
示例#5
0
 def test_should_notify_excluded(self):
     p = MailProcessor(min_level=None, exclude_loggers=['root'])
     group = Mock(spec=Group)
     group.project = Project()
     group.level = 5
     group.logger = 'root'
     self.assertFalse(p.should_notify(group=group, event=Mock()))
示例#6
0
    def test_notify_users_does_email(self, _send_mail):
        group = Group(
            id=2,
            first_seen=timezone.now(),
            last_seen=timezone.now(),
            project=self.project,
        )

        event = Event(
            group=group,
            message='hello world',
            logger='root',
            project=self.project,
            datetime=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('fail_silently'), False)
        self.assertEquals(kwargs.get('project'), self.project)
        self.assertEquals(kwargs.get('subject'), u"[Project Name] ERROR: hello world")
示例#7
0
文件: tests.py 项目: urbaniak/sentry
    def test_notify_users_does_email(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"
        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("fail_silently"), False)
        self.assertEquals(kwargs.get("project"), project)
        self.assertEquals(kwargs.get("subject"), u"[Project Name] ERROR: hello world")
示例#8
0
    def test_notify_users_renders_interfaces_with_utf8(self, _send_mail):
        group = Group(
            id=2,
            first_seen=timezone.now(),
            last_seen=timezone.now(),
            project=self.project,
        )

        stacktrace = Mock(spec=Stacktrace)
        stacktrace.to_string.return_value = u'רונית מגן'
        stacktrace.get_title.return_value = 'Stacktrace'

        event = Event()
        event.group = group
        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)
示例#9
0
    def test_notify_users_does_email(self, _send_mail):
        project = Project(id=1, name='Project Name')

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

        event = Event()
        event.group = group
        event.message = 'hello world'
        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('fail_silently'), False)
        self.assertEquals(kwargs.get('project'), project)
        self.assertEquals(kwargs.get('subject'), u"[Project Name] ERROR: hello world")
示例#10
0
文件: tests.py 项目: jacklme/sentry
    def test_notify_users_renders_interfaces_with_utf8(self, _send_mail):
        group = Group(
            id=2,
            first_seen=timezone.now(),
            last_seen=timezone.now(),
            project=self.project,
        )

        stacktrace = Mock(spec=Stacktrace)
        stacktrace.to_string.return_value = u'רונית מגן'
        stacktrace.get_title.return_value = 'Stacktrace'

        event = Event()
        event.group = group
        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)
示例#11
0
文件: tests.py 项目: jacklme/sentry
 def test_should_notify_excluded(self):
     p = MailProcessor(min_level=None, exclude_loggers=['root'])
     group = Mock(spec=Group)
     group.project = Project()
     group.level = 5
     group.logger = 'root'
     self.assertFalse(p.should_notify(group=group, event=Mock()))
示例#12
0
文件: tests.py 项目: jacklme/sentry
    def test_should_notify_match(self):
        p = MailProcessor(min_level=None)
        group = Mock(spec=Group)
        group.level = 5
        group.project = Project()
        group.logger = 'root'
        event = Mock()
        event.data = {}
        self.assertTrue

        (p.should_notify(group=group, event=event))
示例#13
0
    def test_should_notify_match(self):
        p = MailProcessor(min_level=None)
        group = Mock(spec=Group)
        group.level = 5
        group.project = Project()
        group.logger = 'root'
        event = Mock()
        event.data = {}
        self.assertTrue

        (p.should_notify(group=group, event=event))
示例#14
0
    def test_get_emails_for_users(self):
        from django.contrib.auth.models import User
        from sentry.models import UserOption

        user = User.objects.create(username='******', email='*****@*****.**')
        user2 = User.objects.create(username='******', email='*****@*****.**')

        p = MailProcessor()

        self.assertEquals(sorted(p.get_emails_for_users([user.pk, user2.pk])),
                          sorted([user.email, user2.email]))
        UserOption.objects.create(key='alert_email', value='*****@*****.**', user=user2)

        self.assertEquals(sorted(p.get_emails_for_users([user.pk, user2.pk])),
                          sorted([user.email, '*****@*****.**']))
示例#15
0
文件: tests.py 项目: NewAgeDev/sentry
    def test_get_sendable_users(self):
        from django.contrib.auth.models import User
        from sentry.models import Project, UserOption

        user = User.objects.create(username='******', email='*****@*****.**')
        user2 = User.objects.create(username='******', email='*****@*****.**')
        project = Project.objects.create(name='Test', slug='test', owner=user)
        project.team.member_set.get_or_create(user=user)
        project.team.member_set.get_or_create(user=user2)

        p = MailProcessor()

        # all members
        self.assertEqual(sorted(set([user.pk, user2.pk])),
                         sorted(p.get_sendable_users(project)))

        # disabled user2
        UserOption.objects.create(key='mail:alert', value=0, project=project, user=user2)
        self.assertEqual(sorted(set([user.pk])),
                         sorted(p.get_sendable_users(project)))
示例#16
0
文件: tests.py 项目: urbaniak/sentry
    def test_get_sendable_users(self):
        from django.contrib.auth.models import User
        from sentry.models import Project, UserOption

        user = User.objects.create(username="******", email="*****@*****.**", is_active=True)
        user2 = User.objects.create(username="******", email="*****@*****.**", is_active=True)
        user3 = User.objects.create(username="******", email="*****@*****.**", is_active=False)
        project = Project.objects.create(name="Test", slug="test", owner=user)
        project.team.member_set.get_or_create(user=user)
        project.team.member_set.get_or_create(user=user2)
        project.team.member_set.get_or_create(user=user3)

        p = MailProcessor()

        # all members
        self.assertEqual(sorted(set([user.pk, user2.pk])), sorted(p.get_sendable_users(project)))

        # disabled user2
        UserOption.objects.create(key="mail:alert", value=0, project=project, user=user2)
        self.assertEqual(sorted(set([user.pk])), sorted(p.get_sendable_users(project)))
示例#17
0
文件: tests.py 项目: urbaniak/sentry
    def test_send_to(self, get_emails_for_users, get_sendable_users, get_value):
        opts = {}

        admins = ["1"]
        member_emails = ["2", "3"]
        project_emails = ["2", "4"]

        get_value.side_effect = lambda p, k, d: opts.get(k, d)
        get_emails_for_users.side_effect = lambda x: x
        get_sendable_users.return_value = member_emails

        project = mock.Mock()
        project.id = 1
        project.pk = project.id

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

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

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

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

            # project emails with members and admins
            opts = {"mail:send_to": ",".join(project_emails), "mail:send_to_members": True, "mail:send_to_admins": True}
            self.assertEqual(sorted(set(project_emails + admins + member_emails)), sorted(p.get_send_to(project)))
示例#18
0
文件: tests.py 项目: duncm/sentry
    def test_multiline_error(self, _send_mail):
        group = Group(
            id=2,
            first_seen=timezone.now(),
            last_seen=timezone.now(),
            project=self.project,
        )

        event = Event(
            group=group,
            message='hello world\nfoo bar',
            logger='root',
            project=self.project,
            datetime=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
        assert kwargs.get('subject') == u"[{0}] ERROR: hello world".format(self.project.name)
示例#19
0
    def test_notify_users_renders_interfaces_with_utf8_fix_issue_422(self, _send_mail):
        group = Group()
        group.first_seen = timezone.now()
        group.last_seen = group.first_seen
        group.id = 2
        group.project_id = 1

        stacktrace = Mock(spec=Stacktrace)
        stacktrace.to_string.return_value = u'רונית מגן'
        stacktrace.get_title.return_value = 'Stacktrace'

        event = Event()
        event.group = group
        event.message = 'Soubor ji\xc5\xbe existuje'
        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)
示例#20
0
    def test_send_to(self, get_emails_for_users, get_sendable_users, get_value):
        opts = {}

        member_emails = ['2', '3']
        project_emails = ['2', '4']

        get_value.side_effect = lambda p, k, d: opts.get(k, d)
        get_emails_for_users.side_effect = lambda x: x
        get_sendable_users.return_value = member_emails

        project = mock.Mock()
        project.id = 1
        project.pk = project.id

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

        # project emails without members
        opts = {'mail:send_to': ','.join(project_emails),
                'mail:send_to_members': False}
        self.assertEqual(sorted(set(project_emails)),
                         sorted(p.get_send_to(project)))
示例#21
0
文件: tests.py 项目: urbaniak/sentry
    def test_notify_users_renders_interfaces_with_utf8(self, _send_mail):
        group = Group()
        group.first_seen = datetime.datetime.now()
        group.last_seen = group.first_seen
        group.id = 2
        group.project_id = 1

        stacktrace = Mock(spec=Stacktrace)
        stacktrace.to_string.return_value = u"רונית מגן"
        stacktrace.get_title.return_value = "Stacktrace"

        event = Event()
        event.group = group
        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)
示例#22
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()))
示例#23
0
 def test_should_notify_no_send_to(self):
     p = MailProcessor()
     self.assertFalse(p.should_notify(group=Mock(), event=Mock()))
示例#24
0
文件: tests.py 项目: linovia/sentry
    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.team.member_set = Mock()
            project.team.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)))
示例#25
0
文件: tests.py 项目: urbaniak/sentry
 def test_should_notify_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_notify(group=group, event=Mock()))
示例#26
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()))
示例#27
0
文件: tests.py 项目: jacklme/sentry
 def plugin(self):
     return MailProcessor()