-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsentry_test.go
66 lines (61 loc) · 1.6 KB
/
sentry_test.go
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
package zslog
import (
"sync"
"testing"
"time"
"github.com/getsentry/sentry-go"
)
// TODO: test sentry stacktrace
func TestSentry(t *testing.T) {
transport := &TransportMock{}
log, err := New(Sentry(SentryConfig{Transport: transport}, time.Second, NewLevels()))
if err != nil {
t.Fatal(err)
}
log.Debug().Str("s", "test").Int("i", 9).Msg("msg")
if transport.lastEvent == nil {
t.Fatal("Sentry not capture event")
}
t.Run("Message", func(t *testing.T) {
if transport.lastEvent.Message != "msg" {
t.Errorf("Sentry message want 'msg', but get '%s'", transport.lastEvent.Message)
}
})
t.Run("Level", func(t *testing.T) {
if transport.lastEvent.Level != "debug" {
t.Errorf("Sentry want debug level, but get %s", transport.lastEvent.Level)
}
})
t.Run("Payload", func(t *testing.T) {
payload, ok := transport.lastEvent.Contexts["payload"]
if !ok {
t.Fatal("Payload not found")
}
if payload["s"] != "test" {
t.Errorf("Sentry want 'test' in 's' payload, but get '%s'", payload["s"])
}
if payload["i"] != "9" {
t.Errorf("Sentry want '9' in 'i' payload, but get '%s'", payload["i"])
}
})
}
type TransportMock struct {
mu sync.Mutex
events []*sentry.Event
lastEvent *sentry.Event
}
func (t *TransportMock) Configure(options sentry.ClientOptions) {}
func (t *TransportMock) SendEvent(event *sentry.Event) {
t.mu.Lock()
defer t.mu.Unlock()
t.events = append(t.events, event)
t.lastEvent = event
}
func (t *TransportMock) Flush(timeout time.Duration) bool {
return true
}
func (t *TransportMock) Events() []*sentry.Event {
t.mu.Lock()
defer t.mu.Unlock()
return t.events
}