mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-12-16 21:58:50 +08:00
parent
603da92a21
commit
b11254e51f
2 changed files with 45 additions and 0 deletions
42
normalize/importTransform_test.go
Normal file
42
normalize/importTransform_test.go
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
package normalize
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/StackExchange/dnscontrol/models"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestImportTransform(t *testing.T) {
|
||||||
|
|
||||||
|
const transformDouble = "0.0.0.0~1.1.1.1~~9.0.0.0,10.0.0.0"
|
||||||
|
const transformSingle = "0.0.0.0~1.1.1.1~~8.0.0.0"
|
||||||
|
src := &models.DomainConfig{
|
||||||
|
Name: "stackexchange.com",
|
||||||
|
Records: []*models.RecordConfig{
|
||||||
|
{Type: "A", Name: "*", NameFQDN: "*.stackexchange.com", Target: "0.0.2.2"},
|
||||||
|
{Type: "A", Name: "www", NameFQDN: "", Target: "0.0.1.1"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
dst := &models.DomainConfig{
|
||||||
|
Name: "internal",
|
||||||
|
Records: []*models.RecordConfig{
|
||||||
|
{Type: "A", Name: "*.stackexchange.com", NameFQDN: "*.stackexchange.com.internal", Target: "0.0.3.3", Metadata: map[string]string{"transform_table": transformSingle}},
|
||||||
|
{Type: "IMPORT_TRANSFORM", Name: "@", Target: "stackexchange.com", Metadata: map[string]string{"transform_table": transformDouble}},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
cfg := &models.DNSConfig{
|
||||||
|
Domains: []*models.DomainConfig{src, dst},
|
||||||
|
}
|
||||||
|
if errs := NormalizeAndValidateConfig(cfg); len(errs) != 0 {
|
||||||
|
for _, err := range errs {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
d := cfg.FindDomain("internal")
|
||||||
|
if len(d.Records) != 3 {
|
||||||
|
for _, r := range d.Records {
|
||||||
|
t.Error(r)
|
||||||
|
}
|
||||||
|
t.Fatalf("Expected 3 records in internal, but got %d", len(d.Records))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -147,6 +147,9 @@ func import_transform(src_domain, dst_domain *models.DomainConfig, transforms []
|
||||||
// 4. For As, change the target as described the transforms.
|
// 4. For As, change the target as described the transforms.
|
||||||
|
|
||||||
for _, rec := range src_domain.Records {
|
for _, rec := range src_domain.Records {
|
||||||
|
if dst_domain.HasRecordTypeName(rec.Type, rec.NameFQDN) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
newRec := func() *models.RecordConfig {
|
newRec := func() *models.RecordConfig {
|
||||||
rec2, _ := rec.Copy()
|
rec2, _ := rec.Copy()
|
||||||
rec2.Name = rec2.NameFQDN
|
rec2.Name = rec2.NameFQDN
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue