diff options
Diffstat (limited to 'internal/gitaly/service/operations/merge_test.go')
-rw-r--r-- | internal/gitaly/service/operations/merge_test.go | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/internal/gitaly/service/operations/merge_test.go b/internal/gitaly/service/operations/merge_test.go index 41c5038c8..d16fab2b3 100644 --- a/internal/gitaly/service/operations/merge_test.go +++ b/internal/gitaly/service/operations/merge_test.go @@ -120,6 +120,125 @@ func TestUserMergeBranch_successful(t *testing.T) { } } +func TestUserMergeBranch_failure(t *testing.T) { + t.Parallel() + ctx := testhelper.Context(t) + + ctx, cfg, repoProto, repoPath, client := setupOperationsService(t, ctx) + + _ = localrepo.NewTestRepo(t, cfg, repoProto) + + gittest.Exec(t, cfg, "-C", repoPath, "branch", mergeBranchName, mergeBranchHeadBefore) + + testCases := []struct { + user *gitalypb.User + repo *gitalypb.Repository + desc string + commitID string + errMessage string + branch []byte + message []byte + code codes.Code + }{ + { + desc: "empty repository", + user: gittest.TestUser, + branch: []byte(mergeBranchName), + commitID: commitToMerge, + code: codes.InvalidArgument, + message: []byte("sample-message"), + errMessage: "", + }, + { + desc: "empty user", + repo: repoProto, + branch: []byte(mergeBranchName), + commitID: commitToMerge, + code: codes.InvalidArgument, + message: []byte("sample-message"), + errMessage: "empty user", + }, + { + desc: "empty user name", + user: &gitalypb.User{ + GlId: gittest.TestUser.GlId, + GlUsername: gittest.TestUser.GlUsername, + Email: gittest.TestUser.Email, + Timezone: gittest.TestUser.Timezone, + }, + repo: repoProto, + branch: []byte(mergeBranchName), + commitID: commitToMerge, + code: codes.InvalidArgument, + message: []byte("sample-message"), + errMessage: "empty user name", + }, + { + desc: "empty user email", + user: &gitalypb.User{ + GlId: gittest.TestUser.GlId, + Name: gittest.TestUser.Name, + GlUsername: gittest.TestUser.GlUsername, + Timezone: gittest.TestUser.Timezone, + }, + repo: repoProto, + branch: []byte(mergeBranchName), + commitID: commitToMerge, + code: codes.InvalidArgument, + message: []byte("sample-message"), + errMessage: "empty user email", + }, + { + desc: "empty commit", + repo: repoProto, + user: gittest.TestUser, + branch: []byte(mergeBranchName), + code: codes.InvalidArgument, + message: []byte("sample-message"), + errMessage: "empty commit ID", + }, + { + desc: "empty branch", + repo: repoProto, + user: gittest.TestUser, + commitID: commitToMerge, + code: codes.InvalidArgument, + message: []byte("sample-message"), + errMessage: "empty branch name", + }, + { + desc: "empty message", + repo: repoProto, + user: gittest.TestUser, + branch: []byte(mergeBranchName), + commitID: commitToMerge, + code: codes.InvalidArgument, + errMessage: "empty message", + }, + } + + for _, testCase := range testCases { + t.Run(testCase.desc, func(t *testing.T) { + request := &gitalypb.UserMergeBranchRequest{ + Repository: testCase.repo, + User: testCase.user, + Branch: testCase.branch, + CommitId: testCase.commitID, + Message: testCase.message, + } + + mergeBidi, err := client.UserMergeBranch(ctx) + require.NoError(t, err) + + require.NoError(t, mergeBidi.Send(request), "apply merge") + _, err = mergeBidi.Recv() + + testhelper.RequireGrpcCode(t, err, testCase.code) + require.ErrorContains(t, err, testCase.errMessage) + }) + } +} + func TestUserMergeBranch_quarantine(t *testing.T) { t.Parallel() |