coredns/plugin/auto/xfr_test.go
2025-06-04 14:37:52 -07:00

99 lines
1.7 KiB
Go

package auto
import (
"testing"
"github.com/coredns/coredns/plugin/file"
)
func TestAutoNotify(t *testing.T) {
t.Parallel()
a := &Auto{
Zones: &Zones{
names: []string{"example.org.", "test.org."},
},
transfer: nil,
}
err := a.Notify()
if err != nil {
t.Errorf("Expected no error, got %v", err)
}
}
func TestAutoTransferZoneCase(t *testing.T) {
t.Parallel()
tests := []struct {
name string
zone string
expectError bool
errorType string
}{
{
name: "exact match",
zone: "example.org.",
expectError: true,
errorType: "no SOA",
},
{
name: "case different",
zone: "EXAMPLE.ORG.",
expectError: true,
errorType: "not authoritative",
},
{
name: "no match",
zone: "other.org.",
expectError: true,
errorType: "not authoritative",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
a := createTestAutoForTransfer(t, []string{"example.org."})
ch, err := a.Transfer(tt.zone, 1234)
if !tt.expectError {
if err != nil {
t.Errorf("Expected no error, got %v", err)
}
if ch == nil {
t.Error("Expected non-nil channel")
}
} else {
if err == nil {
t.Error("Expected error, got nil")
}
if ch != nil {
t.Error("Expected nil channel when error occurs")
}
}
})
}
}
// Helper functions
func createTestAutoForTransfer(t *testing.T, zones []string) *Auto {
t.Helper()
a := &Auto{
Zones: &Zones{
Z: make(map[string]*file.Zone),
names: zones,
},
}
// Initialize with real empty zones for the tests
for _, zone := range zones {
a.Z[zone] = &file.Zone{}
}
return a
}