mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 17:53:21 -04: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")
 | ||
|  | 	}
 | ||
|  | }
 |