diff options
author | Zeger-Jan van de Weg <git@zjvandeweg.nl> | 2019-03-19 15:47:51 +0300 |
---|---|---|
committer | Zeger-Jan van de Weg <git@zjvandeweg.nl> | 2019-04-05 15:28:30 +0300 |
commit | 73cdfc41cc30624c2c7d9924e816b31581d344a8 (patch) | |
tree | 37ee92984af40b46bc9ea0c52f98d3cd00be7cc4 | |
parent | 25ab5d2bf337e12c0f76ac24d6b24aa7ddd011ec (diff) |
Renaming RPC returns InvalidArgument if target existszj-revert-namespace-ensure-namespace
Previously the status code returned when the target directory already
existed was Internal. Even before that it was InvalidArgument. Some
clients depend on the old behaviour, which is now reverted to.
-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", |