diff --git a/integration_tests/management/network_map_db/pgsql/domain_test.go b/integration_tests/management/network_map_db/pgsql/domain_test.go new file mode 100644 index 000000000..8a6e7fe8f --- /dev/null +++ b/integration_tests/management/network_map_db/pgsql/domain_test.go @@ -0,0 +1,40 @@ +package networkmap_pgsql + +import ( + "context" + "database/sql" + "testing" + + networkmap_pgsql "github.com/netbirdio/netbird/management/internals/network_map_db/pgsql" + "github.com/stretchr/testify/assert" +) + +func TestGetDomains(t *testing.T) { + ctx := context.TODO() + + _, err := pgstore.Pool.Query(ctx, + `insert into domains (id, account_id, domain, target_cluster) + VALUES('domain-1','account-1','test-1.com','target-1.cluster.local')`) + assert.NoError(t, err) + _, err = pgstore.Pool.Query(ctx, + `insert into domains (id, account_id, domain, target_cluster) + VALUES('domain-2','account-1','test-2.com','target-2.cluster.local')`) + assert.NoError(t, err) + _, err = pgstore.Pool.Query(ctx, + `insert into domains (id, account_id, domain, target_cluster) + VALUES('domain-3','account-1',null,null)`) + assert.NoError(t, err) + + domains, err := pgstore.GetDomains(ctx, "account-1") + assert.NoError(t, err) + assert.Len(t, domains, 2) + + assert.Contains(t, domains, networkmap_pgsql.Domain{ + Domain: sql.NullString{String: "test-1.com", Valid: true}, + TargetCluster: sql.NullString{String: "target-1.cluster.local", Valid: true}, + }) + assert.Contains(t, domains, networkmap_pgsql.Domain{ + Domain: sql.NullString{String: "test-2.com", Valid: true}, + TargetCluster: sql.NullString{String: "target-2.cluster.local", Valid: true}, + }) +} diff --git a/management/internals/network_map_db/pgsql/domain.go b/management/internals/network_map_db/pgsql/domain.go index 6a2e99778..aca2bb70f 100644 --- a/management/internals/network_map_db/pgsql/domain.go +++ b/management/internals/network_map_db/pgsql/domain.go @@ -11,11 +11,11 @@ const ( GetDomainsQuery = ` select domain, target_cluster from domains - where account_id=$1 + where account_id=$1 and domain<>'' and target_cluster<>'' ` ) -func (pg *PgStore) GetDomains(ctx context.Context, accountId string) ([]domain, error) { +func (pg *PgStore) GetDomains(ctx context.Context, accountId string) ([]Domain, error) { c, err := pg.Pool.Acquire(ctx) if err != nil { return nil, err @@ -23,16 +23,16 @@ func (pg *PgStore) GetDomains(ctx context.Context, accountId string) ([]domain, return GetDomainsViaPgxConnection(ctx, c.Conn(), accountId) } -func GetDomainsViaPgxConnection(ctx context.Context, conn *pgx.Conn, accountId string) ([]domain, error) { +func GetDomainsViaPgxConnection(ctx context.Context, conn *pgx.Conn, accountId string) ([]Domain, error) { rows, err := conn.Query(ctx, GetDomainsQuery, accountId) if err != nil { return nil, err } - return pgx.CollectRows(rows, pgx.RowToStructByName[domain]) + return pgx.CollectRows(rows, pgx.RowToStructByName[Domain]) } -type domain struct { +type Domain struct { Domain sql.NullString TargetCluster sql.NullString } diff --git a/management/internals/network_map_db/pgsql/network_map_data.go b/management/internals/network_map_db/pgsql/network_map_data.go index de9465e15..81246a8fd 100644 --- a/management/internals/network_map_db/pgsql/network_map_data.go +++ b/management/internals/network_map_db/pgsql/network_map_data.go @@ -164,7 +164,7 @@ func toSliceOfPtrs[T any](all []T) []*T { return toret } -func serviceDomainZone(svc service, ds []domain) string { +func serviceDomainZone(svc service, ds []Domain) string { if domainFromSuffix(svc.Domain.String, svc.ProxyCluster.String) { return svc.ProxyCluster.String } @@ -189,7 +189,7 @@ func domainFromSuffix(domain, suffix string) bool { return domain == suffix || strings.HasSuffix(domain, "."+suffix) } -func buildPrivateServiceCandidates(svcs []service, domains []domain, proxyPeersByCluster map[string][]*nmdata.Peer) []networkmap.PrivateServiceCandidate { +func buildPrivateServiceCandidates(svcs []service, domains []Domain, proxyPeersByCluster map[string][]*nmdata.Peer) []networkmap.PrivateServiceCandidate { var out []networkmap.PrivateServiceCandidate if len(proxyPeersByCluster) == 0 {