From 21f4c7c4dcf07b27ed3065b35404d4149d6d1f0e Mon Sep 17 00:00:00 2001 From: danielm-codefresh Date: Mon, 20 Feb 2023 11:54:13 +0200 Subject: [PATCH] make sure repo name is not empty --- go.mod | 3 ++- go.sum | 5 ++++- pkg/git/repository.go | 6 ++++++ pkg/git/repository_test.go | 11 +++++++++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 4864e078..d348e019 100644 --- a/go.mod +++ b/go.mod @@ -58,6 +58,7 @@ require ( github.com/argoproj/notifications-engine v0.3.1-0.20220812180936-4d8552b0775f // indirect github.com/argoproj/pkg v0.11.1-0.20211203175135-36c59d8fafe0 // indirect github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect + github.com/beaconsoftwarellc/gadget v1.3.8 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bombsimon/logrusr/v2 v2.0.1 // indirect github.com/bradleyfalzon/ghinstallation/v2 v2.0.4 // indirect @@ -96,7 +97,7 @@ require ( github.com/go-openapi/validate v0.19.8 // indirect github.com/go-redis/cache/v8 v8.4.2 // indirect github.com/go-redis/redis/v8 v8.11.3 // indirect - github.com/go-stack/stack v1.8.0 // indirect + github.com/go-stack/stack v1.8.1 // indirect github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.4.0 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogits/go-gogs-client v0.0.0-20190616193657-5a05380e4bc2 // indirect diff --git a/go.sum b/go.sum index 3f14773a..5b87894d 100644 --- a/go.sum +++ b/go.sum @@ -182,6 +182,8 @@ github.com/aws/aws-sdk-go v1.33.16/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZve github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.38.49/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/beaconsoftwarellc/gadget v1.3.8 h1:B9E4VyUeZhg6WwDhEkDOF07dQ9ds1J7oke/0o2kwbBo= +github.com/beaconsoftwarellc/gadget v1.3.8/go.mod h1:VjsazzjXTA2Aibxhh9b4oouC4/Qk0MQHyq89gO13/6s= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -473,8 +475,9 @@ github.com/go-redis/redis/v8 v8.11.3 h1:GCjoYp8c+yQTJfc0n69iwSiHjvuAdruxl7elnZCx github.com/go-redis/redis/v8 v8.11.3/go.mod h1:xNJ9xDG09FsIPwh3bWdk+0oDWHbtF9rPN0F/oD9XeKc= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= +github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.4.0 h1:Mr3JcvBjQEhCN9wld6OHKHuHxWaoXTaQfYKmj7QwP18= github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.4.0/go.mod h1:A2S0CWkNylc2phvKXWBBdD3K0iGnDBGbzRpISP2zBl8= diff --git a/pkg/git/repository.go b/pkg/git/repository.go index 0d4cecfe..f7c571af 100644 --- a/pkg/git/repository.go +++ b/pkg/git/repository.go @@ -15,6 +15,7 @@ import ( "github.com/argoproj-labs/argocd-autopilot/pkg/log" "github.com/argoproj-labs/argocd-autopilot/pkg/store" "github.com/argoproj-labs/argocd-autopilot/pkg/util" + "github.com/beaconsoftwarellc/gadget/stringutil" billy "github.com/go-git/go-billy/v5" gg "github.com/go-git/go-git/v5" @@ -505,6 +506,11 @@ var createRepo = func(ctx context.Context, opts *CloneOptions) (defaultBranch st } _, orgRepo, _, _, _, _, _ := util.ParseGitUrl(opts.Repo) + // It depends on the provider, but org repo strucure should at least contain org and repo name + if len(stringutil.CleanWhiteSpace(strings.Split(orgRepo, "/"))) < 2 { + return "", errors.New("repo name can't be empty") + } + return provider.CreateRepository(ctx, orgRepo) } diff --git a/pkg/git/repository_test.go b/pkg/git/repository_test.go index 76662618..29332180 100644 --- a/pkg/git/repository_test.go +++ b/pkg/git/repository_test.go @@ -1340,6 +1340,17 @@ func Test_createRepo(t *testing.T) { }, want: "main", }, + "Should fail if repo name is empty": { + opts: &CloneOptions{ + Repo: "https://github.com/owner/", + Provider: "github", + Auth: Auth{ + Username: "username", + Password: "password", + }, + }, + wantErr: "repo name can't be empty", + }, } orgGetProvider := getProvider