Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'internal/service/ssh/receive_pack_test.go')
-rw-r--r--internal/service/ssh/receive_pack_test.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/internal/service/ssh/receive_pack_test.go b/internal/service/ssh/receive_pack_test.go
new file mode 100644
index 000000000..813e292c8
--- /dev/null
+++ b/internal/service/ssh/receive_pack_test.go
@@ -0,0 +1,50 @@
+package ssh
+
+import (
+ "testing"
+
+ "gitlab.com/gitlab-org/gitaly/internal/testhelper"
+
+ pb "gitlab.com/gitlab-org/gitaly-proto/go"
+
+ "golang.org/x/net/context"
+ "google.golang.org/grpc/codes"
+)
+
+func TestFailedReceivePackRequestDueToValidationError(t *testing.T) {
+ server := runSSHServer(t)
+ defer server.Stop()
+
+ client := newSSHClient(t)
+
+ rpcRequests := []pb.SSHReceivePackRequest{
+ {Repository: &pb.Repository{Path: ""}, GlId: "user-123"}, // Repository.Path is empty
+ {Repository: nil, GlId: "user-123"}, // Repository is nil
+ {Repository: &pb.Repository{Path: "/path/to/repo"}, GlId: ""}, // Empty GlId
+ {Repository: &pb.Repository{Path: "/path/to/repo"}, GlId: "user-123", Stdin: []byte("Fail")}, // Data exists on first request
+ }
+
+ for _, rpcRequest := range rpcRequests {
+ t.Logf("test case: %v", rpcRequest)
+ stream, err := client.SSHReceivePack(context.Background())
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if err = stream.Send(&rpcRequest); err != nil {
+ t.Fatal(err)
+ }
+ stream.CloseSend()
+
+ err = drainPostReceivePackResponse(stream)
+ testhelper.AssertGrpcError(t, err, codes.InvalidArgument, "")
+ }
+}
+
+func drainPostReceivePackResponse(stream pb.SSH_SSHReceivePackClient) error {
+ var err error
+ for err == nil {
+ _, err = stream.Recv()
+ }
+ return err
+}