mirror of
https://github.com/coredns/coredns.git
synced 2025-08-06 14:27:03 +02:00
99 lines
1.7 KiB
Go
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
|
|
}
|