diff options
author | John Cai <jcai@gitlab.com> | 2018-12-21 05:09:36 +0300 |
---|---|---|
committer | John Cai <jcai@gitlab.com> | 2019-01-04 10:10:43 +0300 |
commit | a7fd8d8ea7704c1f70bee21a09e36f1351ba68f6 (patch) | |
tree | 9e9e6eb5cf46044b239ea018d726a360280762a1 | |
parent | 2d8c184ff2588824d33fadbe75fff59fb59c6f9c (diff) |
adding validationg for find all tags
-rw-r--r-- | internal/service/commit/commit_messages_test.go | 2 | ||||
-rw-r--r-- | internal/service/ref/refs.go | 20 |
2 files changed, 20 insertions, 2 deletions
diff --git a/internal/service/commit/commit_messages_test.go b/internal/service/commit/commit_messages_test.go index 3a8cda045..0eb832758 100644 --- a/internal/service/commit/commit_messages_test.go +++ b/internal/service/commit/commit_messages_test.go @@ -51,7 +51,7 @@ func TestSuccessfulGetCommitMessagesRequest(t *testing.T) { }, } fetchedMessages := readAllMessagesFromClient(t, c) - require.Equal(t, len(expectedMessages), len(fetchedMessages)) + require.Equal(t, expectedMessages, fetchedMessages) } diff --git a/internal/service/ref/refs.go b/internal/service/ref/refs.go index d9b0b40e4..4044e941d 100644 --- a/internal/service/ref/refs.go +++ b/internal/service/ref/refs.go @@ -3,10 +3,13 @@ package ref import ( "bufio" "bytes" + "errors" "fmt" "regexp" "strings" + "gitlab.com/gitlab-org/gitaly/internal/helper" + grpc_logrus "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus" log "github.com/sirupsen/logrus" "gitlab.com/gitlab-org/gitaly-proto/go/gitalypb" @@ -73,15 +76,30 @@ func (s *server) FindAllTagNames(in *gitalypb.FindAllTagNamesRequest, stream git func (s *server) FindAllTags(in *gitalypb.FindAllTagsRequest, stream gitalypb.RefService_FindAllTagsServer) error { ctx := stream.Context() + if err := validateFindAllTagsRequest(in); err != nil { + return status.Errorf(codes.InvalidArgument, "FindAllTags: %v", err) + } + tags, err := gitlog.GetAllTags(ctx, in.GetRepository()) if err != nil { - return err + return status.Errorf(codes.Internal, "error when getting all tags: %v", err) } return stream.Send(&gitalypb.FindAllTagsResponse{ Tags: tags, }) } +func validateFindAllTagsRequest(request *gitalypb.FindAllTagsRequest) error { + if request.GetRepository() == nil { + return errors.New("empty Repository") + } + _, err := helper.GetRepoPath(request.GetRepository()) + if err != nil { + return errors.New("invalid git directory") + } + return nil +} + func _findBranchNames(ctx context.Context, repo *gitalypb.Repository) ([][]byte, error) { var names [][]byte |