This repository was archived by the owner on Oct 23, 2023. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 651
Expand file tree
/
Copy pathtests.py
More file actions
142 lines (119 loc) · 5.78 KB
/
tests.py
File metadata and controls
142 lines (119 loc) · 5.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
from __future__ import with_statement
from __future__ import unicode_literals
import logbook
from raven.utils.compat import PY2
from raven.utils.testutils import TestCase
from raven.base import Client
from raven.handlers.logbook import SentryHandler
class TempStoreClient(Client):
def __init__(self, **kwargs):
self.events = []
super(TempStoreClient, self).__init__(**kwargs)
def is_enabled(self):
return True
def send(self, **kwargs):
self.events.append(kwargs)
class LogbookHandlerTest(TestCase):
def setUp(self):
self.logger = logbook.Logger(__name__)
def test_logger(self):
client = TempStoreClient(include_paths=['tests', 'raven'])
handler = SentryHandler(client)
logger = self.logger
with handler.applicationbound():
logger.error('This is a test error')
self.assertEquals(len(client.events), 1)
event = client.events.pop(0)
self.assertEquals(event['logger'], __name__)
self.assertEquals(event['level'], 'error')
self.assertEquals(event['message'], 'This is a test error')
self.assertFalse('exception' in event)
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertEquals(msg['message'], 'This is a test error')
self.assertEquals(msg['params'], ())
logger.warning('This is a test warning')
self.assertEquals(len(client.events), 1)
event = client.events.pop(0)
self.assertEquals(event['logger'], __name__)
self.assertEquals(event['level'], 'warning')
self.assertEquals(event['message'], 'This is a test warning')
self.assertFalse('exception' in event)
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertEquals(msg['message'], 'This is a test warning')
self.assertEquals(msg['params'], ())
logger.info('This is a test info with a url', extra=dict(
url='http://example.com',
))
self.assertEquals(len(client.events), 1)
event = client.events.pop(0)
if not PY2:
expected = "'http://example.com'"
else:
expected = "u'http://example.com'"
self.assertEquals(event['extra']['url'], expected)
self.assertFalse('exception' in event)
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertEquals(msg['message'], 'This is a test info with a url')
self.assertEquals(msg['params'], ())
logger.error('This is a test of stacks', extra=dict(
stack=True
))
self.assertEquals(len(client.events), 1)
event = client.events.pop(0)
self.assertTrue(event['extra']['stack'])
self.assertFalse('exception' in event)
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertTrue('stacktrace' in event)
frames = event['stacktrace']['frames']
self.assertNotEquals(len(frames), 1)
frame = frames[0]
self.assertEquals(msg['message'], 'This is a test of stacks')
self.assertEquals(msg['params'], ())
try:
raise ValueError('This is a test ValueError')
except ValueError:
logger.info('This is a test info with an exception', exc_info=True)
self.assertEquals(len(client.events), 1)
event = client.events.pop(0)
self.assertEquals(event['message'], 'This is a test info with an exception')
assert 'exception' in event
exc = event['exception']['values'][-1]
self.assertEquals(exc['type'], 'ValueError')
self.assertEquals(exc['value'], 'This is a test ValueError')
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertEquals(msg['message'], 'This is a test info with an exception')
self.assertEquals(msg['params'], ())
# test args
logger.info('This is a test of {0}', 'args')
self.assertEquals(len(client.events), 1)
event = client.events.pop(0)
self.assertEquals(event['message'], 'This is a test of args')
assert 'exception' not in event
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertEquals(msg['message'], 'This is a test of {0}')
expected = ("'args'",) if not PY2 else ("u'args'",)
self.assertEquals(msg['params'], expected)
def test_client_arg(self):
client = TempStoreClient(include_paths=['tests'])
handler = SentryHandler(client)
self.assertEquals(handler.client, client)
def test_client_kwarg(self):
client = TempStoreClient(include_paths=['tests'])
handler = SentryHandler(client=client)
self.assertEquals(handler.client, client)
def test_first_arg_as_dsn(self):
handler = SentryHandler('http://public:secret@example.com/1')
self.assertTrue(isinstance(handler.client, Client))
def test_custom_client_class(self):
handler = SentryHandler('http://public:secret@example.com/1', client_cls=TempStoreClient)
self.assertTrue(type(handler.client), TempStoreClient)
def test_invalid_first_arg_type(self):
self.assertRaises(ValueError, SentryHandler, object)
def test_missing_client_arg(self):
self.assertRaises(TypeError, SentryHandler)