From 2442bd6198295be78f8a0265254b5b881f08e432 Mon Sep 17 00:00:00 2001 From: Dmitri Dolguikh Date: Wed, 5 Aug 2026 14:29:07 +0200 Subject: [PATCH] tests for GetNameServerGroupsViaPgxConnection and GetPostureChecksViaPgxConnection Signed-off-by: Dmitri Dolguikh --- .../network_map_db/pgsql/nameserver_test.go | 63 +++++++++++++++++++ .../network_map_db/pgsql/posture_test.go | 56 +++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 integration_tests/management/network_map_db/pgsql/nameserver_test.go create mode 100644 integration_tests/management/network_map_db/pgsql/posture_test.go diff --git a/integration_tests/management/network_map_db/pgsql/nameserver_test.go b/integration_tests/management/network_map_db/pgsql/nameserver_test.go new file mode 100644 index 000000000..e23a5091c --- /dev/null +++ b/integration_tests/management/network_map_db/pgsql/nameserver_test.go @@ -0,0 +1,63 @@ +package networkmap_pgsql + +import ( + "context" + "net/netip" + "testing" + + networkmap_pgsql "github.com/netbirdio/netbird/management/internals/network_map_db/pgsql" + "github.com/netbirdio/netbird/shared/management/networkmap/nmdata" + "github.com/stretchr/testify/assert" +) + +func TestGetNameServerGroups(t *testing.T) { + ctx := context.TODO() + + _, err := pgstore.Pool.Query(ctx, + `insert into name_server_groups (id, public_id, name, description, name_servers, groups, domains, enabled, search_domains_enabled, "primary", account_id) + VALUES('nsgroup-1','nsgroup-1-public','nsgroup-1','nsgroup-1','[{"IP":"192.168.31.2","NSType":1,"Port":53}]','["group-one-resource-id"]','["test-1.com"]',TRUE,FALSE,TRUE,'account-1')`) + assert.NoError(t, err) + _, err = pgstore.Pool.Query(ctx, + `insert into name_server_groups (id, public_id, name, description, name_servers, groups, domains, enabled, search_domains_enabled,"primary",account_id) + VALUES('nsgroup-2','nsgroup-2-public','nsgroup-2','nsgroup-2','[{"IP":"192.168.32.3","NSType":1,"Port":53}]','["group-one-resource-id","group-no-resources-id"]','["test-1.com","test-2.com"]',TRUE,FALSE,TRUE,'account-1')`) + assert.NoError(t, err) + _, err = pgstore.Pool.Query(ctx, + `insert into name_server_groups (id, public_id, name, description, name_servers, groups, domains, enabled, search_domains_enabled,"primary",account_id) + VALUES('nsgroup-3','nsgroup-3-public',null,null,null,null,null,TRUE,FALSE,FALSE,'account-1')`) + assert.NoError(t, err) + + nsgroups, err := networkmap_pgsql.GetNameServerGroupsViaPgxConnection(ctx, conn(t, ctx), "account-1") + assert.NoError(t, err) + + assert.Contains(t, nsgroups, nmdata.NameServerGroup{ + ID: "nsgroup-1", + PublicID: "nsgroup-1-public", + Name: "nsgroup-1", + Description: "nsgroup-1", + NameServers: []nmdata.NameServer{{IP: netip.MustParseAddr("192.168.31.2"), NSType: 1, Port: 53}}, + Groups: []string{"group-one-resource-id"}, + Domains: []string{"test-1.com"}, + Primary: true, + SearchDomainsEnabled: false, + Enabled: true, + }) + assert.Contains(t, nsgroups, nmdata.NameServerGroup{ + ID: "nsgroup-2", + PublicID: "nsgroup-2-public", + Name: "nsgroup-2", + Description: "nsgroup-2", + NameServers: []nmdata.NameServer{{IP: netip.MustParseAddr("192.168.32.3"), NSType: 1, Port: 53}}, + Groups: []string{"group-one-resource-id", "group-no-resources-id"}, + Domains: []string{"test-1.com", "test-2.com"}, + Primary: true, + SearchDomainsEnabled: false, + Enabled: true, + }) + assert.Contains(t, nsgroups, nmdata.NameServerGroup{ + ID: "nsgroup-3", + PublicID: "nsgroup-3-public", + Primary: false, + SearchDomainsEnabled: false, + Enabled: true, + }) +} diff --git a/integration_tests/management/network_map_db/pgsql/posture_test.go b/integration_tests/management/network_map_db/pgsql/posture_test.go new file mode 100644 index 000000000..30c86dc64 --- /dev/null +++ b/integration_tests/management/network_map_db/pgsql/posture_test.go @@ -0,0 +1,56 @@ +package networkmap_pgsql + +import ( + "context" + "net/netip" + "testing" + + networkmap_pgsql "github.com/netbirdio/netbird/management/internals/network_map_db/pgsql" + "github.com/netbirdio/netbird/shared/management/networkmap/nmdata" + "github.com/stretchr/testify/assert" +) + +func TestGetPostureChecks(t *testing.T) { + ctx := context.TODO() + + _, err := pgstore.Pool.Query(ctx, + `insert into posture_checks (id, account_id, public_id, checks) + VALUES('posturecheck-1','account-1','posturecheck-1-public', + '{"NBVersionCheck":{"MinVersion":"0.25.0"}, + "OSVersionCheck":{"Darwin":{"MinVersion":"12.0"}}, + "GeoLocationCheck":{"Locations":[{"CountryCode":"FI","CityName":""}],"Action":"allow"}, + "PeerNetworkRangeCheck":{"Action":"deny","Ranges":["192.168.0.1/24"]}}')`) + assert.NoError(t, err) + + _, err = pgstore.Pool.Query(ctx, + `insert into posture_checks (id, account_id, public_id, checks) + VALUES('posturecheck-2','account-1','posturecheck-2-public', + '{"NBVersionCheck":{"MinVersion":"0.25.0"}, + "OSVersionCheck":{"Android":{"MinVersion":"0"}}, + "GeoLocationCheck":{"Locations":[{"CountryCode":"US","CityName":"Harker Heights"}],"Action":"allow"}, + "PeerNetworkRangeCheck":{"Action":"allow","Ranges":["0.0.0.0/0"]}}')`) + assert.NoError(t, err) + + postureChecks, idToPublicIDIdx, err := networkmap_pgsql.GetPostureChecksViaPgxConnection(ctx, conn(t, ctx), "account-1") + assert.NoError(t, err) + assert.Equal(t, idToPublicIDIdx, map[string]string{ + "posturecheck-1": "posturecheck-1-public", + "posturecheck-2": "posturecheck-2-public", + }) + assert.Contains(t, postureChecks, nmdata.PostureChecks{ + ID: "posturecheck-1", + Checks: nmdata.ChecksDefinition{ + NBVersionCheck: &nmdata.NBVersionCheck{MinVersion: "0.25.0"}, + OSVersionCheck: &nmdata.OSVersionCheck{Darwin: &nmdata.MinVersionCheck{MinVersion: "12.0"}}, + GeoLocationCheck: &nmdata.GeoLocationCheck{Locations: []nmdata.GeoLocation{{CountryCode: "FI"}}, Action: "allow"}, + PeerNetworkRangeCheck: &nmdata.PeerNetworkRangeCheck{Action: "deny", Ranges: []netip.Prefix{netip.MustParsePrefix("192.168.0.1/24")}}, + }}) + assert.Contains(t, postureChecks, nmdata.PostureChecks{ + ID: "posturecheck-2", + Checks: nmdata.ChecksDefinition{ + NBVersionCheck: &nmdata.NBVersionCheck{MinVersion: "0.25.0"}, + OSVersionCheck: &nmdata.OSVersionCheck{Android: &nmdata.MinVersionCheck{MinVersion: "0"}}, + GeoLocationCheck: &nmdata.GeoLocationCheck{Locations: []nmdata.GeoLocation{{CountryCode: "US", CityName: "Harker Heights"}}, Action: "allow"}, + PeerNetworkRangeCheck: &nmdata.PeerNetworkRangeCheck{Action: "allow", Ranges: []netip.Prefix{netip.MustParsePrefix("0.0.0.0/0")}}, + }}) +}