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:
-rw-r--r--internal/service/namespace/namespace.go11
-rw-r--r--internal/service/namespace/namespace_test.go2
2 files changed, 11 insertions, 2 deletions
diff --git a/internal/service/namespace/namespace.go b/internal/service/namespace/namespace.go
index f1682cee8..abbe9ba88 100644
--- a/internal/service/namespace/namespace.go
+++ b/internal/service/namespace/namespace.go
@@ -115,7 +115,8 @@ func directoryExists(storagePath, namespace string) (bool, error) {
}
func validateRenameNamespaceRequest(req *gitalypb.RenameNamespaceRequest) error {
- if _, err := helper.GetStorageByName(req.GetStorageName()); err != nil {
+ storePath, err := helper.GetStorageByName(req.GetStorageName())
+ if err != nil {
return err
}
@@ -126,5 +127,13 @@ func validateRenameNamespaceRequest(req *gitalypb.RenameNamespaceRequest) error
return errors.New("to field cannot be empty")
}
+ if found, err := directoryExists(storePath, req.GetTo()); found || err != nil {
+ if err != nil {
+ return err
+ }
+
+ return errors.New("target directory already exists")
+ }
+
return nil
}
diff --git a/internal/service/namespace/namespace_test.go b/internal/service/namespace/namespace_test.go
index 2469d8cc0..9a1f5f4f7 100644
--- a/internal/service/namespace/namespace_test.go
+++ b/internal/service/namespace/namespace_test.go
@@ -271,7 +271,7 @@ func TestRenameNamespace(t *testing.T) {
To: "existing",
StorageName: "default",
},
- errorCode: codes.Internal,
+ errorCode: codes.InvalidArgument,
},
{
desc: "non existing to parent directory",