github.com/kurthockenbury/dnscontrol@v0.2.8/pkg/normalize/importTransform_test.go (about)

     1  package normalize
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/StackExchange/dnscontrol/models"
     7  )
     8  
     9  func makeRC(label, domain, target string, rc models.RecordConfig) *models.RecordConfig {
    10  	rc.SetLabel(label, domain)
    11  	rc.SetTarget(target)
    12  	return &rc
    13  }
    14  
    15  func TestImportTransform(t *testing.T) {
    16  
    17  	const transformDouble = "0.0.0.0~1.1.1.1~~9.0.0.0,10.0.0.0"
    18  	const transformSingle = "0.0.0.0~1.1.1.1~~8.0.0.0"
    19  	src := &models.DomainConfig{
    20  		Name: "stackexchange.com",
    21  		Records: []*models.RecordConfig{
    22  			makeRC("*", "stackexchange.com", "0.0.2.2", models.RecordConfig{Type: "A"}),
    23  			makeRC("www", "stackexchange.com", "0.0.1.1", models.RecordConfig{Type: "A"}),
    24  		},
    25  	}
    26  	dst := &models.DomainConfig{
    27  		Name: "internal",
    28  		Records: []*models.RecordConfig{
    29  			makeRC("*.stackexchange.com", "*.stackexchange.com.internal", "0.0.3.3", models.RecordConfig{Type: "A", Metadata: map[string]string{"transform_table": transformSingle}}),
    30  			makeRC("@", "internal", "stackexchange.com", models.RecordConfig{Type: "IMPORT_TRANSFORM", Metadata: map[string]string{"transform_table": transformDouble}}),
    31  		},
    32  	}
    33  	cfg := &models.DNSConfig{
    34  		Domains: []*models.DomainConfig{src, dst},
    35  	}
    36  	if errs := NormalizeAndValidateConfig(cfg); len(errs) != 0 {
    37  		for _, err := range errs {
    38  			t.Error(err)
    39  		}
    40  		t.FailNow()
    41  	}
    42  	d := cfg.FindDomain("internal")
    43  	if len(d.Records) != 3 {
    44  		for _, r := range d.Records {
    45  			t.Error(r)
    46  		}
    47  		t.Fatalf("Expected 3 records in internal, but got %d", len(d.Records))
    48  	}
    49  }