diff options
-rw-r--r-- | internal/service/namespace/namespace.go | 11 | ||||
-rw-r--r-- | internal/service/namespace/namespace_test.go | 2 |
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", |