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

     1  package client_test
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/kyma-incubator/compass/components/director/internal/domain/client"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func TestLoadFromContext(t *testing.T) {
    15  	value := "foo"
    16  
    17  	testCases := []struct {
    18  		Name    string
    19  		Context context.Context
    20  
    21  		ExpectedResult     string
    22  		ExpectedErrMessage string
    23  	}{
    24  		{
    25  			Name:               "Success",
    26  			Context:            context.WithValue(context.TODO(), client.ClientUserContextKey, value),
    27  			ExpectedResult:     value,
    28  			ExpectedErrMessage: "",
    29  		},
    30  		{
    31  			Name:               "Error",
    32  			Context:            context.TODO(),
    33  			ExpectedResult:     "",
    34  			ExpectedErrMessage: "cannot read client_user from context",
    35  		},
    36  	}
    37  
    38  	for i, testCase := range testCases {
    39  		t.Run(fmt.Sprintf("%d: %s", i, testCase.Name), func(t *testing.T) {
    40  			// WHEN
    41  			result, err := client.LoadFromContext(testCase.Context)
    42  
    43  			// then
    44  			if testCase.ExpectedErrMessage != "" {
    45  				require.Equal(t, testCase.ExpectedErrMessage, err.Error())
    46  				return
    47  			}
    48  
    49  			assert.Equal(t, testCase.ExpectedResult, result)
    50  		})
    51  	}
    52  }
    53  
    54  func TestSaveToLoadFromContext(t *testing.T) {
    55  	// GIVEN
    56  	value := "foo"
    57  	ctx := context.TODO()
    58  
    59  	// WHEN
    60  	result := client.SaveToContext(ctx, value)
    61  
    62  	// then
    63  	assert.Equal(t, value, result.Value(client.ClientUserContextKey))
    64  }