From 0a9c5caa94d312ff725a205fda5c2a5765f1e743 Mon Sep 17 00:00:00 2001 From: Ahsan Barkati Date: Fri, 4 Jun 2021 18:46:31 +0530 Subject: [PATCH] fix: check existence before banning namespace --- edgraph/multi_tenancy_ee.go | 3 +++ systest/multi-tenancy/basic_test.go | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/edgraph/multi_tenancy_ee.go b/edgraph/multi_tenancy_ee.go index 3bda6d1161e..bc11147a867 100644 --- a/edgraph/multi_tenancy_ee.go +++ b/edgraph/multi_tenancy_ee.go @@ -138,5 +138,8 @@ func createGuardianAndGroot(ctx context.Context, namespace uint64, passwd string // Authorization is handled by middlewares. func (s *Server) DeleteNamespace(ctx context.Context, namespace uint64) error { glog.Info("Deleting namespace", namespace) + if _, ok := schema.State().Namespaces()[namespace]; !ok { + return errors.Errorf("The namespace %#x doesn't exist", namespace) + } return worker.ProcessDeleteNsRequest(ctx, namespace) } diff --git a/systest/multi-tenancy/basic_test.go b/systest/multi-tenancy/basic_test.go index 6e8656bdda5..1e3f7efb820 100644 --- a/systest/multi-tenancy/basic_test.go +++ b/systest/multi-tenancy/basic_test.go @@ -276,6 +276,11 @@ func TestDeleteNamespace(t *testing.T) { testutil.CompareJSON(t, expected, string(resp)) } + // Deleting a non-existent namespace should error out. + err = testutil.DeleteNamespace(t, galaxyToken, 1000) + require.Error(t, err) + require.Contains(t, err.Error(), "The namespace 0x3e8 doesn't exist") + require.NoError(t, addData(x.GalaxyNamespace)) check(x.GalaxyNamespace, `{"me": [{"name":"0"}]}`) require.NoError(t, addData(ns))