diff --git a/registry/txt.go b/registry/txt.go index b42993ecc..06a8314a7 100644 --- a/registry/txt.go +++ b/registry/txt.go @@ -148,7 +148,7 @@ func (im *TXTRegistry) Records(ctx context.Context) ([]*endpoint.Endpoint, error // We simply assume that TXT records for the registry will always have only one target. // If there are no targets (e.g for routing policy based records in google), direct targets will be empty if len(record.Targets) == 0 { - log.Errorf("TXT record has no targets", record.DNSName) + log.Errorf("TXT record has no targets %s", record.DNSName) continue } labels, err := endpoint.NewLabelsFromString(record.Targets[0], im.txtEncryptAESKey) diff --git a/registry/txt_test.go b/registry/txt_test.go index cdd190b12..3f8af218d 100644 --- a/registry/txt_test.go +++ b/registry/txt_test.go @@ -1798,3 +1798,38 @@ func TestApplyChangesWithNewFormatOnly(t *testing.T) { "TXT record should have 'a-' prefix when using new format only") } } + +func TestTXTRegistryRecordsWithEmptyTargets(t *testing.T) { + ctx := context.Background() + p := inmemory.NewInMemoryProvider() + p.CreateZone(testZone) + p.ApplyChanges(ctx, &plan.Changes{ + Create: []*endpoint.Endpoint{ + { + DNSName: "empty-targets.test-zone.example.org", + RecordType: endpoint.RecordTypeTXT, + Targets: endpoint.Targets{}, + }, + { + DNSName: "valid-targets.test-zone.example.org", + RecordType: endpoint.RecordTypeTXT, + Targets: endpoint.Targets{"target1"}, + }, + }, + }) + + r, _ := NewTXTRegistry(p, "", "", "owner", time.Hour, "", []string{}, []string{}, false, nil, false) + records, err := r.Records(ctx) + require.NoError(t, err) + + expectedRecords := []*endpoint.Endpoint{ + { + DNSName: "valid-targets.test-zone.example.org", + Targets: endpoint.Targets{"target1"}, + RecordType: endpoint.RecordTypeTXT, + Labels: map[string]string{}, + }, + } + + assert.True(t, testutils.SameEndpoints(records, expectedRecords)) +}