mirror of
https://github.com/coredns/coredns.git
synced 2025-08-07 14:57:01 +02:00
223 lines
4.1 KiB
Go
223 lines
4.1 KiB
Go
package auto
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/coredns/coredns/plugin/file"
|
|
)
|
|
|
|
func TestZonesNames(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
zones []string
|
|
expected []string
|
|
}{
|
|
{
|
|
name: "empty zones",
|
|
zones: []string{},
|
|
expected: []string{},
|
|
},
|
|
{
|
|
name: "single zone",
|
|
zones: []string{"example.org."},
|
|
expected: []string{"example.org."},
|
|
},
|
|
{
|
|
name: "multiple zones",
|
|
zones: []string{"example.org.", "test.org.", "another.com."},
|
|
expected: []string{"example.org.", "test.org.", "another.com."},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
z := &Zones{
|
|
names: tt.zones,
|
|
}
|
|
|
|
result := z.Names()
|
|
|
|
if len(result) != len(tt.expected) {
|
|
t.Errorf("Expected %d names, got %d", len(tt.expected), len(result))
|
|
}
|
|
|
|
for i, name := range tt.expected {
|
|
if i >= len(result) || result[i] != name {
|
|
t.Errorf("Expected name %s at index %d, got %s", name, i, result[i])
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestZonesOrigins(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
origins []string
|
|
expected []string
|
|
}{
|
|
{
|
|
name: "empty origins",
|
|
origins: []string{},
|
|
expected: []string{},
|
|
},
|
|
{
|
|
name: "single origin",
|
|
origins: []string{"example.org."},
|
|
expected: []string{"example.org."},
|
|
},
|
|
{
|
|
name: "multiple origins",
|
|
origins: []string{"example.org.", "test.org."},
|
|
expected: []string{"example.org.", "test.org."},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
z := &Zones{
|
|
origins: tt.origins,
|
|
}
|
|
|
|
result := z.Origins()
|
|
|
|
if len(result) != len(tt.expected) {
|
|
t.Errorf("Expected %d origins, got %d", len(tt.expected), len(result))
|
|
}
|
|
|
|
for i, origin := range tt.expected {
|
|
if i >= len(result) || result[i] != origin {
|
|
t.Errorf("Expected origin %s at index %d, got %s", origin, i, result[i])
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestZonesZones(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
zone1 := &file.Zone{}
|
|
zone2 := &file.Zone{}
|
|
|
|
z := &Zones{
|
|
Z: map[string]*file.Zone{
|
|
"example.org.": zone1,
|
|
"test.org.": zone2,
|
|
},
|
|
}
|
|
|
|
tests := []struct {
|
|
name string
|
|
zoneName string
|
|
expected *file.Zone
|
|
}{
|
|
{
|
|
name: "existing zone",
|
|
zoneName: "example.org.",
|
|
expected: zone1,
|
|
},
|
|
{
|
|
name: "another existing zone",
|
|
zoneName: "test.org.",
|
|
expected: zone2,
|
|
},
|
|
{
|
|
name: "non-existent zone",
|
|
zoneName: "notfound.org.",
|
|
expected: nil,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
result := z.Zones(tt.zoneName)
|
|
|
|
if result != tt.expected {
|
|
t.Errorf("Expected zone %v, got %v", tt.expected, result)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestZonesAdd(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
z := &Zones{}
|
|
zone := &file.Zone{}
|
|
|
|
// Test adding to empty zones
|
|
z.Add(zone, "example.org.", nil)
|
|
|
|
if z.Z == nil {
|
|
t.Error("Expected Z map to be initialized")
|
|
}
|
|
|
|
if z.Z["example.org."] != zone {
|
|
t.Error("Expected zone to be added to map")
|
|
}
|
|
|
|
if len(z.names) != 1 || z.names[0] != "example.org." {
|
|
t.Errorf("Expected names to contain 'example.org.', got %v", z.names)
|
|
}
|
|
|
|
// Test adding another zone
|
|
zone2 := &file.Zone{}
|
|
z.Add(zone2, "test.org.", nil)
|
|
|
|
if len(z.Z) != 2 {
|
|
t.Errorf("Expected 2 zones in map, got %d", len(z.Z))
|
|
}
|
|
|
|
if z.Z["test.org."] != zone2 {
|
|
t.Error("Expected second zone to be added to map")
|
|
}
|
|
|
|
if len(z.names) != 2 {
|
|
t.Errorf("Expected 2 names, got %d", len(z.names))
|
|
}
|
|
}
|
|
|
|
func TestZonesEmptyOperations(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
z := &Zones{}
|
|
|
|
names := z.Names()
|
|
if len(names) != 0 {
|
|
t.Errorf("Expected empty names slice, got %v", names)
|
|
}
|
|
|
|
origins := z.Origins()
|
|
if len(origins) != 0 {
|
|
t.Errorf("Expected empty origins slice, got %v", origins)
|
|
}
|
|
|
|
zone := z.Zones("any.zone.")
|
|
if zone != nil {
|
|
t.Errorf("Expected nil zone, got %v", zone)
|
|
}
|
|
|
|
z.Remove("any.zone.")
|
|
|
|
testZone := &file.Zone{}
|
|
z.Add(testZone, "test.org.", nil)
|
|
|
|
if z.Z == nil {
|
|
t.Error("Expected Z map to be initialized after Add")
|
|
}
|
|
if z.Z["test.org."] != testZone {
|
|
t.Error("Expected zone to be added")
|
|
}
|
|
}
|