mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 02:03:20 -04: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
 | |
| }
 |