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  }