diff --git a/management/server/group.go b/management/server/group.go index 5232c1e7a..7ede2120d 100644 --- a/management/server/group.go +++ b/management/server/group.go @@ -245,6 +245,11 @@ func (am *DefaultAccountManager) DeleteGroup(accountId, userId, groupID string) return &GroupLinkError{"route", string(r.NetID)} } } + for _, g := range r.PeerGroups { + if g == groupID { + return &GroupLinkError{"route", string(r.NetID)} + } + } } // check DNS links diff --git a/management/server/group_test.go b/management/server/group_test.go index 35e9b2170..1c718715d 100644 --- a/management/server/group_test.go +++ b/management/server/group_test.go @@ -70,6 +70,11 @@ func TestDefaultAccountManager_DeleteGroup(t *testing.T) { "grp-for-route", "route", }, + { + "route with peer groups", + "grp-for-route2", + "route", + }, { "name server groups", "grp-for-name-server-grp", @@ -138,6 +143,14 @@ func initTestGroupAccount(am *DefaultAccountManager) (*Account, error) { Peers: make([]string, 0), } + groupForRoute2 := &nbgroup.Group{ + ID: "grp-for-route2", + AccountID: "account-id", + Name: "Group for route", + Issued: nbgroup.GroupIssuedAPI, + Peers: make([]string, 0), + } + groupForNameServerGroups := &nbgroup.Group{ ID: "grp-for-name-server-grp", AccountID: "account-id", @@ -183,6 +196,11 @@ func initTestGroupAccount(am *DefaultAccountManager) (*Account, error) { Groups: []string{groupForRoute.ID}, } + routePeerGroupResource := &route.Route{ + ID: "example route with peer groups", + PeerGroups: []string{groupForRoute2.ID}, + } + nameServerGroup := &nbdns.NameServerGroup{ ID: "example name server group", Groups: []string{groupForNameServerGroups.ID}, @@ -209,6 +227,7 @@ func initTestGroupAccount(am *DefaultAccountManager) (*Account, error) { } account := newAccountWithId(accountID, groupAdminUserID, domain) account.Routes[routeResource.ID] = routeResource + account.Routes[routePeerGroupResource.ID] = routePeerGroupResource account.NameServerGroups[nameServerGroup.ID] = nameServerGroup account.Policies = append(account.Policies, policy) account.SetupKeys[setupKey.Id] = setupKey @@ -220,6 +239,7 @@ func initTestGroupAccount(am *DefaultAccountManager) (*Account, error) { } _ = am.SaveGroup(accountID, groupAdminUserID, groupForRoute) + _ = am.SaveGroup(accountID, groupAdminUserID, groupForRoute2) _ = am.SaveGroup(accountID, groupAdminUserID, groupForNameServerGroups) _ = am.SaveGroup(accountID, groupAdminUserID, groupForPolicies) _ = am.SaveGroup(accountID, groupAdminUserID, groupForSetupKeys)