github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/error_presenter/presenter_test.go (about) 1 package errorpresenter_test 2 3 import ( 4 "context" 5 "fmt" 6 "testing" 7 8 "github.com/pkg/errors" 9 10 "github.com/kyma-incubator/compass/components/director/pkg/log" 11 "github.com/sirupsen/logrus" 12 13 "github.com/stretchr/testify/require" 14 15 errorpresenter "github.com/kyma-incubator/compass/components/director/internal/error_presenter" 16 17 "github.com/kyma-incubator/compass/components/director/internal/uid" 18 "github.com/kyma-incubator/compass/components/director/pkg/apperrors" 19 "github.com/sirupsen/logrus/hooks/test" 20 21 "github.com/stretchr/testify/assert" 22 ) 23 24 func TestPresenter_ErrorPresenter(t *testing.T) { 25 // GIVEN 26 errMsg := "testErr" 27 uidSvc := uid.NewService() 28 logger, hook := test.NewNullLogger() 29 presenter := errorpresenter.NewPresenter(uidSvc) 30 31 t.Run("Unknown error", func(t *testing.T) { 32 ctx := log.ContextWithLogger(context.TODO(), logrus.NewEntry(logger)) 33 34 // WHEN 35 err := presenter.Do(ctx, errors.New(errMsg)) 36 37 entry := hook.LastEntry() 38 39 // THEN 40 require.NotNil(t, entry) 41 assert.Equal(t, fmt.Sprintf("Unknown error: %s", errMsg), entry.Message) 42 assert.Contains(t, err.Error(), "Internal Server Error") 43 assert.Contains(t, err.Error(), fmt.Sprintf("reason: %s", errMsg)) 44 hook.Reset() 45 }) 46 47 t.Run("Internal Error", func(t *testing.T) { 48 ctx := log.ContextWithLogger(context.TODO(), logrus.NewEntry(logger)) 49 50 // GIVEN 51 customErr := apperrors.NewInternalError(errMsg) 52 53 // WHEN 54 err := presenter.Do(ctx, customErr) 55 56 entry := hook.LastEntry() 57 58 // THEN 59 require.NotNil(t, entry) 60 assert.Equal(t, fmt.Sprintf("Internal Server Error: %s", customErr.Error()), entry.Message) 61 assert.Contains(t, err.Error(), "Internal Server Error") 62 hook.Reset() 63 }) 64 65 t.Run("Invalid Data error", func(t *testing.T) { 66 // GIVEN 67 customErr := apperrors.NewInvalidDataError(errMsg) 68 69 // WHEN 70 err := presenter.Do(context.TODO(), customErr) 71 72 // THEN 73 assert.EqualError(t, err, fmt.Sprintf("input: Invalid data [reason=%s]", errMsg)) 74 hook.Reset() 75 }) 76 }