package model import "testing" func TestManaged(t *testing.T) { managed := []RecordType{A, AAAA, CNAME, MX, TXT, SRV} for _, rt := range managed { if !rt.Managed() { t.Errorf("%s should be managed", rt) } } for _, rt := range []RecordType{NS, SOA} { if rt.Managed() { t.Errorf("%s should be read-only", rt) } } } func TestKeyNormalizesName(t *testing.T) { r1 := Record{Type: A, Name: "www.Example.com"} r2 := Record{Type: A, Name: "www.example.com."} if r1.Key() != r2.Key() { t.Fatalf("keys differ: %q vs %q", r1.Key(), r2.Key()) } if r1.Key() != "A www.example.com." { t.Fatalf("unexpected key %q", r1.Key()) } } func TestEqualMXPriorityAndOrder(t *testing.T) { a := Record{Type: MX, Name: "example.com.", TTL: 3600, Values: []string{"10 mx1.example.com.", "20 mx2.Example.com."}} b := Record{Type: MX, Name: "example.com.", TTL: 3600, Values: []string{"20 mx2.example.com.", "10 mx1.example.com."}} if !a.Equal(b) { t.Fatal("MX records equal regardless of order and target case") } c := Record{Type: MX, Name: "example.com.", TTL: 3600, Values: []string{"30 mx1.example.com."}} if a.Equal(c) { t.Fatal("different priority must not be equal") } } func TestEqualTXTCaseSensitive(t *testing.T) { a := Record{Type: TXT, Name: "example.com.", TTL: 60, Values: []string{"v=DKIM1; p=AbC"}} b := Record{Type: TXT, Name: "example.com.", TTL: 60, Values: []string{"v=DKIM1; p=abc"}} if a.Equal(b) { t.Fatal("TXT is case-sensitive") } } func TestEqualTTLMatters(t *testing.T) { a := Record{Type: A, Name: "example.com.", TTL: 300, Values: []string{"1.2.3.4"}} b := Record{Type: A, Name: "example.com.", TTL: 600, Values: []string{"1.2.3.4"}} if a.Equal(b) { t.Fatal("different TTL must not be equal") } }