summaryrefslogtreecommitdiff
path: root/internal/handler/exec_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/handler/exec_test.go')
-rw-r--r--internal/handler/exec_test.go44
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])
+ }
+
+ })
+ }
+}