github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/log/sentryHook_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package log 5 6 import ( 7 "errors" 8 "testing" 9 10 "github.com/getsentry/sentry-go" 11 "github.com/sirupsen/logrus" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestSentryHookLevels(t *testing.T) { 16 hook := NewSentryHook("", "") 17 assert.Equal(t, []logrus.Level{logrus.PanicLevel, logrus.FatalLevel}, hook.Levels()) 18 } 19 20 func TestSentryHookDsn(t *testing.T) { 21 sentryDsn := "http://publickey@url.to.sentry/1" 22 hook := NewSentryHook(sentryDsn, "") 23 24 assert.Equal(t, hook.Hub.Client().Options().Dsn, sentryDsn) 25 } 26 27 func TestSentryHookNoErrorOnInvalidDsn(t *testing.T) { 28 hook := NewSentryHook("invalid sentry dsn", "") 29 30 entry := logrus.Entry{} 31 err := hook.Fire(&entry) 32 assert.NoError(t, err) 33 } 34 35 func TestSentryHookEventLevel(t *testing.T) { 36 sentryDsn := "http://publickey@url.to.sentry/1" 37 hook := NewSentryHook(sentryDsn, "") 38 39 entry := logrus.Entry{} 40 err := hook.Fire(&entry) 41 42 assert.NoError(t, err) 43 assert.Equal(t, sentry.LevelFatal, hook.Event.Level) 44 } 45 46 func TestSentryHookManualTag(t *testing.T) { 47 sentryDsn := "http://publickey@url.to.sentry/1" 48 hook := NewSentryHook(sentryDsn, "") 49 key := "testkey" 50 value := "testValue" 51 hook.tags[key] = value 52 53 assert.NotNil(t, hook.tags[key]) 54 assert.Equal(t, value, hook.tags[key]) 55 56 entry := logrus.Entry{} 57 err := hook.Fire(&entry) 58 59 assert.NoError(t, err) 60 assert.Equal(t, value, hook.tags[key]) 61 } 62 63 func TestSentryHookAutomaticTags(t *testing.T) { 64 sentryDsn := "http://publickey@url.to.sentry/1" 65 corrId := "correlationId" 66 hook := NewSentryHook(sentryDsn, corrId) 67 stepName := "stepName" 68 category := "category" 69 value := "testValue" 70 71 entry := logrus.Entry{ 72 Data: logrus.Fields{ 73 stepName: value, 74 category: value, 75 }, 76 } 77 err := hook.Fire(&entry) 78 79 assert.NoError(t, err) 80 assert.Equal(t, value, hook.tags[stepName]) 81 assert.Equal(t, value, hook.tags[category]) 82 assert.Equal(t, corrId, hook.tags[corrId]) 83 } 84 85 func TestSentryHookException(t *testing.T) { 86 sentryDsn := "http://publickey@url.to.sentry/1" 87 hook := NewSentryHook(sentryDsn, "") 88 hook.Event = sentry.NewEvent() 89 errVal := errors.New("Exception value") 90 errorMessage := "actual error message" 91 exception := sentry.Exception{ 92 Type: errorMessage, 93 Value: errVal.Error(), 94 } 95 96 entry := logrus.Entry{ 97 Data: logrus.Fields{ 98 logrus.ErrorKey: errVal, 99 }, 100 Message: errorMessage, 101 } 102 err := hook.Fire(&entry) 103 104 assert.NoError(t, err) 105 assert.Equal(t, []sentry.Exception{exception}, hook.Event.Exception) 106 }