1package rubyserver 2 3import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 "gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/config" 8 "gitlab.com/gitlab-org/gitaly/v14/internal/testhelper" 9 "gitlab.com/gitlab-org/gitaly/v14/internal/testhelper/testcfg" 10 "google.golang.org/grpc/metadata" 11) 12 13func TestSetHeadersBlocksUnknownMetadata(t *testing.T) { 14 cfg, repo, _ := testcfg.BuildWithRepo(t) 15 16 ctx, cancel := testhelper.Context() 17 defer cancel() 18 19 otherKey := "unknown-key" 20 otherValue := "test-value" 21 inCtx := metadata.NewIncomingContext(ctx, metadata.Pairs(otherKey, otherValue)) 22 23 outCtx, err := SetHeaders(inCtx, config.NewLocator(cfg), repo) 24 require.NoError(t, err) 25 26 outMd, ok := metadata.FromOutgoingContext(outCtx) 27 require.True(t, ok, "outgoing context should have metadata") 28 29 _, ok = outMd[otherKey] 30 require.False(t, ok, "outgoing MD should not contain non-allowlisted key") 31} 32 33func TestSetHeadersPreservesAllowlistedMetadata(t *testing.T) { 34 cfg, repo, _ := testcfg.BuildWithRepo(t) 35 36 ctx, cancel := testhelper.Context() 37 defer cancel() 38 39 key := "gitaly-servers" 40 value := "test-value" 41 inCtx := metadata.NewIncomingContext(ctx, metadata.Pairs(key, value)) 42 43 outCtx, err := SetHeaders(inCtx, config.NewLocator(cfg), repo) 44 require.NoError(t, err) 45 46 outMd, ok := metadata.FromOutgoingContext(outCtx) 47 require.True(t, ok, "outgoing context should have metadata") 48 49 require.Equal(t, []string{value}, outMd[key], "outgoing MD should contain allowlisted key") 50} 51 52func TestRubyFeatureHeaders(t *testing.T) { 53 cfg, repo, _ := testcfg.BuildWithRepo(t) 54 55 ctx, cancel := testhelper.Context() 56 defer cancel() 57 58 key := "gitaly-feature-ruby-test-feature" 59 value := "true" 60 inCtx := metadata.NewIncomingContext(ctx, metadata.Pairs(key, value)) 61 62 outCtx, err := SetHeaders(inCtx, config.NewLocator(cfg), repo) 63 require.NoError(t, err) 64 65 outMd, ok := metadata.FromOutgoingContext(outCtx) 66 require.True(t, ok, "outgoing context should have metadata") 67 68 require.Equal(t, []string{value}, outMd[key], "outgoing MD should contain allowlisted feature key") 69} 70