github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/domain/viewer/resolver_test.go (about)

     1  package viewer_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/kyma-incubator/compass/components/director/pkg/apperrors"
     8  
     9  	"github.com/google/uuid"
    10  	"github.com/kyma-incubator/compass/components/director/internal/domain/viewer"
    11  	"github.com/kyma-incubator/compass/components/director/pkg/consumer"
    12  	"github.com/kyma-incubator/compass/components/director/pkg/graphql"
    13  	"github.com/stretchr/testify/assert"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  func TestResolver_Viewer(t *testing.T) {
    18  	cons := consumer.Consumer{
    19  		ConsumerID:   uuid.New().String(),
    20  		ConsumerType: consumer.Application,
    21  	}
    22  	expectedViewer := graphql.Viewer{
    23  		ID:   cons.ConsumerID,
    24  		Type: graphql.ViewerTypeApplication,
    25  	}
    26  
    27  	t.Run("Success", func(t *testing.T) {
    28  		// GIVEN
    29  		ctx := context.TODO()
    30  		ctx = consumer.SaveToContext(ctx, cons)
    31  		resolver := viewer.NewViewerResolver()
    32  
    33  		// WHEN
    34  		vwr, err := resolver.Viewer(ctx)
    35  		// THEN
    36  		require.NoError(t, err)
    37  		require.NotNil(t, vwr)
    38  		assert.Equal(t, expectedViewer, *vwr)
    39  	})
    40  
    41  	t.Run("Error while converting", func(t *testing.T) {
    42  		// GIVEN
    43  		ctx := context.TODO()
    44  		invalidConsumer := consumer.Consumer{
    45  			ConsumerID:   uuid.New().String(),
    46  			ConsumerType: "",
    47  		}
    48  		ctx = consumer.SaveToContext(ctx, invalidConsumer)
    49  		resolver := viewer.NewViewerResolver()
    50  		// WHEN
    51  		_, err := resolver.Viewer(ctx)
    52  		// THEN
    53  		require.Error(t, err)
    54  		assert.EqualError(t, err, apperrors.NewInternalError("viewer does not exist").Error())
    55  	})
    56  
    57  	t.Run("No consumer in ctx", func(t *testing.T) {
    58  		// GIVEN
    59  		ctx := context.TODO()
    60  		resolver := viewer.NewViewerResolver()
    61  
    62  		// WHEN
    63  		_, err := resolver.Viewer(ctx)
    64  
    65  		// THEN
    66  		require.Error(t, err)
    67  		assert.EqualError(t, err, "while getting viewer from context: Internal Server Error: cannot read consumer from context")
    68  	})
    69  }