1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
package uploadpack
import (
"bytes"
"context"
"testing"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitlab-shell/v14/client/testserver"
"gitlab.com/gitlab-org/gitlab-shell/v14/internal/command"
"gitlab.com/gitlab-org/gitlab-shell/v14/internal/command/commandargs"
"gitlab.com/gitlab-org/gitlab-shell/v14/internal/command/readwriter"
"gitlab.com/gitlab-org/gitlab-shell/v14/internal/config"
"gitlab.com/gitlab-org/gitlab-shell/v14/internal/testhelper/requesthandlers"
)
func TestAllowedAccess(t *testing.T) {
gitalyAddress, _ := testserver.StartGitalyServer(t, "unix")
requests := requesthandlers.BuildAllowedWithGitalyHandlers(t, gitalyAddress)
cmd, _ := setup(t, "1", requests)
cmd.Config.GitalyClient.InitSidechannelRegistry(context.Background())
ctxWithLogData, err := cmd.Execute(context.Background())
require.NoError(t, err)
data := ctxWithLogData.Value("logData").(command.LogData)
require.Equal(t, "alex-doe", data.Username)
require.Equal(t, "group/project-path", data.Meta.Project)
require.Equal(t, "group", data.Meta.RootNamespace)
}
func TestForbiddenAccess(t *testing.T) {
requests := requesthandlers.BuildDisallowedByApiHandlers(t)
cmd, _ := setup(t, "disallowed", requests)
_, err := cmd.Execute(context.Background())
require.Equal(t, "Disallowed by API call", err.Error())
}
func setup(t *testing.T, keyId string, requests []testserver.TestRequestHandler) (*Command, *bytes.Buffer) {
url := testserver.StartHttpServer(t, requests)
output := &bytes.Buffer{}
input := bytes.NewBufferString("input")
cmd := &Command{
Config: &config.Config{GitlabUrl: url},
Args: &commandargs.Shell{GitlabKeyId: keyId, SshArgs: []string{"git-upload-pack", "group/repo"}},
ReadWriter: &readwriter.ReadWriter{ErrOut: output, Out: output, In: input},
}
return cmd, output
}
|