diff options
Diffstat (limited to 'internal/handler/exec_test.go')
-rw-r--r-- | internal/handler/exec_test.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/internal/handler/exec_test.go b/internal/handler/exec_test.go index 6c7d3f5..7c85e16 100644 --- a/internal/handler/exec_test.go +++ b/internal/handler/exec_test.go @@ -5,8 +5,10 @@ import ( "errors" "testing" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc" + "google.golang.org/grpc/metadata" "gitlab.com/gitlab-org/gitlab-shell/internal/config" ) @@ -40,3 +42,45 @@ func TestMissingGitalyAddress(t *testing.T) { err := cmd.RunGitalyCommand(makeHandler(t, nil)) require.EqualError(t, err, "no gitaly_address given") } + +func TestGetConnMetadata(t *testing.T) { + tests := []struct { + name string + gc *GitalyCommand + want map[string]string + }{ + { + name: "gitaly_feature_flags", + gc: &GitalyCommand{ + Config: &config.Config{}, + Address: "tcp://localhost:9999", + Features: map[string]string{ + "gitaly-feature-cache_invalidator": "true", + "other-ff": "true", + "gitaly-feature-inforef_uploadpack_cache": "false", + }, + }, + want: map[string]string{ + "gitaly-feature-cache_invalidator": "true", + "gitaly-feature-inforef_uploadpack_cache": "false", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + conn, err := getConn(tt.gc) + require.NoError(t, err) + + md, exists := metadata.FromOutgoingContext(conn.ctx) + require.True(t, exists) + require.Equal(t, len(tt.want), md.Len()) + + for k, v := range tt.want { + values := md.Get(k) + assert.Equal(t, 1, len(values)) + assert.Equal(t, v, values[0]) + } + + }) + } +} |