github.com/philhug/dnscontrol@v0.2.4-0.20180625181521-921fa9849001/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 }