From 56e8215ebe16ff354647fbb7c238a9e2de964dfa Mon Sep 17 00:00:00 2001 From: Dmitri Dolguikh Date: Wed, 24 Jun 2026 14:29:23 +0200 Subject: [PATCH] updated 'resource-routing-bridge/router-peer-change refreshes policy sources' test to expect router peer among changed peer ids Signed-off-by: Dmitri Dolguikh --- .../server/affected_peers_coverage_test.go | 124 ++++++++---------- 1 file changed, 58 insertions(+), 66 deletions(-) diff --git a/management/server/affected_peers_coverage_test.go b/management/server/affected_peers_coverage_test.go index b8e3327e1..998676c5e 100644 --- a/management/server/affected_peers_coverage_test.go +++ b/management/server/affected_peers_coverage_test.go @@ -8,6 +8,10 @@ import ( "github.com/stretchr/testify/require" "github.com/netbirdio/netbird/management/server/affectedpeers" + resourceTypes "github.com/netbirdio/netbird/management/server/networks/resources/types" + networkTypes "github.com/netbirdio/netbird/management/server/networks/types" + "github.com/netbirdio/netbird/management/server/posture" + "github.com/netbirdio/netbird/management/server/types" ) // TestAffectedPeers_DependencyCoverageMatrix enumerates each network-map @@ -22,88 +26,76 @@ func TestAffectedPeers_DependencyCoverageMatrix(t *testing.T) { } rows := []row{ -<<<<<<< Updated upstream { name: "policy-groups/source-group-change refreshes source+routing, excludes unrelated", build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { _, err := s.manager.SavePolicy(ctx, s.accountID, userID, peerToResourcePolicyByGroup(s.sourceGroupID, s.resourceGroupID), true) require.NoError(t, err) return affectedpeers.Change{ChangedGroupIDs: []string{s.sourceGroupID}}, - []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} // TODO (dmitri) routerPeer is missing + []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} }, }, -======= - // { - // name: "policy-groups/source-group-change refreshes source+routing, excludes unrelated", - // build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { - // _, err := s.manager.SavePolicy(ctx, s.accountID, userID, peerToResourcePolicyByGroup(s.sourceGroupID, s.resourceGroupID), true) - // require.NoError(t, err) - // return affectedpeers.Change{ChangedGroupIDs: []string{s.sourceGroupID}}, - // []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} - // }, - // }, ->>>>>>> Stashed changes { name: "resource-routing-bridge/router-peer-change refreshes policy sources", build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { _, err := s.manager.SavePolicy(ctx, s.accountID, userID, peerToResourcePolicyByGroup(s.sourceGroupID, s.resourceGroupID), true) require.NoError(t, err) return affectedpeers.Change{ChangedPeerIDs: []string{s.routerPeerID}}, - []string{s.sourcePeerID}, []string{s.unrelatedPeerID} + []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} + }, + }, + { + name: "policy-change/explicit-policy refreshes source+routing", + build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { + policy := peerToResourcePolicyByGroup(s.sourceGroupID, s.resourceGroupID) + return affectedpeers.Change{Policies: []*types.Policy{policy}}, + []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} + }, + }, + { + name: "policy-destinationresource/explicit-policy bridges to routing peer", + build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { + policy := peerToResourcePolicyByResource(s.sourceGroupID, s.resourceID) + return affectedpeers.Change{Policies: []*types.Policy{policy}}, + []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} + }, + }, + { + name: "resource-change refreshes source+routing on its network", + build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { + _, err := s.manager.SavePolicy(ctx, s.accountID, userID, peerToResourcePolicyByGroup(s.sourceGroupID, s.resourceGroupID), true) + require.NoError(t, err) + return affectedpeers.Change{Resources: []*resourceTypes.NetworkResource{ + {ID: s.resourceID, NetworkID: s.networkID, GroupIDs: []string{s.resourceGroupID}}, + }}, + []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} + }, + }, + { + name: "network-change refreshes source+routing on that network", + build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { + _, err := s.manager.SavePolicy(ctx, s.accountID, userID, peerToResourcePolicyByGroup(s.sourceGroupID, s.resourceGroupID), true) + require.NoError(t, err) + return affectedpeers.Change{Networks: []*networkTypes.Network{{ID: s.networkID}}}, + []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} + }, + }, + { + name: "posture-check-change refreshes source+routing of gated policy", + build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { + check, err := s.manager.SavePostureChecks(ctx, s.accountID, userID, &posture.Checks{ + Name: "cov-min-version", + Checks: posture.ChecksDefinition{NBVersionCheck: &posture.NBVersionCheck{MinVersion: "0.30.0"}}, + }, true) + require.NoError(t, err) + policy := peerToResourcePolicyByGroup(s.sourceGroupID, s.resourceGroupID) + policy.SourcePostureChecks = []string{check.ID} + _, err = s.manager.SavePolicy(ctx, s.accountID, userID, policy, true) + require.NoError(t, err) + return affectedpeers.Change{PostureCheckIDs: []string{check.ID}}, + []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} }, }, - // { - // name: "policy-change/explicit-policy refreshes source+routing", - // build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { - // policy := peerToResourcePolicyByGroup(s.sourceGroupID, s.resourceGroupID) - // return affectedpeers.Change{Policies: []*types.Policy{policy}}, - // []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} - // }, - // }, - // { - // name: "policy-destinationresource/explicit-policy bridges to routing peer", - // build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { - // policy := peerToResourcePolicyByResource(s.sourceGroupID, s.resourceID) - // return affectedpeers.Change{Policies: []*types.Policy{policy}}, - // []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} - // }, - // }, - // { - // name: "resource-change refreshes source+routing on its network", - // build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { - // _, err := s.manager.SavePolicy(ctx, s.accountID, userID, peerToResourcePolicyByGroup(s.sourceGroupID, s.resourceGroupID), true) - // require.NoError(t, err) - // return affectedpeers.Change{Resources: []*resourceTypes.NetworkResource{ - // {ID: s.resourceID, NetworkID: s.networkID, GroupIDs: []string{s.resourceGroupID}}, - // }}, - // []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} - // }, - // }, - // { - // name: "network-change refreshes source+routing on that network", - // build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { - // _, err := s.manager.SavePolicy(ctx, s.accountID, userID, peerToResourcePolicyByGroup(s.sourceGroupID, s.resourceGroupID), true) - // require.NoError(t, err) - // return affectedpeers.Change{Networks: []*networkTypes.Network{{ID: s.networkID}}}, - // []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} - // }, - // }, - // { - // name: "posture-check-change refreshes source+routing of gated policy", - // build: func(t *testing.T, s *routerScenario, ctx context.Context) (affectedpeers.Change, []string, []string) { - // check, err := s.manager.SavePostureChecks(ctx, s.accountID, userID, &posture.Checks{ - // Name: "cov-min-version", - // Checks: posture.ChecksDefinition{NBVersionCheck: &posture.NBVersionCheck{MinVersion: "0.30.0"}}, - // }, true) - // require.NoError(t, err) - // policy := peerToResourcePolicyByGroup(s.sourceGroupID, s.resourceGroupID) - // policy.SourcePostureChecks = []string{check.ID} - // _, err = s.manager.SavePolicy(ctx, s.accountID, userID, policy, true) - // require.NoError(t, err) - // return affectedpeers.Change{PostureCheckIDs: []string{check.ID}}, - // []string{s.sourcePeerID, s.routerPeerID}, []string{s.unrelatedPeerID} - // }, - // }, } for _, r := range rows {