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 }