github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/meta/context_test.go (about)

     1  package meta
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  	"google.golang.org/grpc/metadata"
     9  )
    10  
    11  func TestContext(t *testing.T) {
    12  	for _, tt := range []struct {
    13  		name   string
    14  		ctx    context.Context //nolint:containedctx
    15  		header string
    16  		values []string
    17  	}{
    18  		{
    19  			name:   "WithApplicationName",
    20  			ctx:    WithApplicationName(context.Background(), "test"),
    21  			header: HeaderApplicationName,
    22  			values: []string{"test"},
    23  		},
    24  		{
    25  			name: "WithApplicationName",
    26  			ctx: WithApplicationName(
    27  				WithApplicationName(
    28  					context.Background(),
    29  					"test1",
    30  				),
    31  				"test2",
    32  			),
    33  			header: HeaderApplicationName,
    34  			values: []string{"test2"},
    35  		},
    36  		{
    37  			name:   "WithTraceID",
    38  			ctx:    WithTraceID(context.Background(), "my-trace-id"),
    39  			header: HeaderTraceID,
    40  			values: []string{"my-trace-id"},
    41  		},
    42  		{
    43  			name:   "WithRequestType",
    44  			ctx:    WithRequestType(context.Background(), "my-request-type"),
    45  			header: HeaderRequestType,
    46  			values: []string{"my-request-type"},
    47  		},
    48  		{
    49  			name:   "WithAllowFeatures",
    50  			ctx:    WithAllowFeatures(context.Background(), "feature-1", "feature-2", "feature-3"),
    51  			header: HeaderClientCapabilities,
    52  			values: []string{"feature-1", "feature-2", "feature-3"},
    53  		},
    54  	} {
    55  		t.Run(tt.name, func(t *testing.T) {
    56  			md, has := metadata.FromOutgoingContext(tt.ctx)
    57  			require.True(t, has)
    58  			require.Equal(t, tt.values, md.Get(tt.header))
    59  		})
    60  	}
    61  }