package dns_api import ( "net" "testing" ) const testZone = "example.com." func TestRecordSign(t *testing.T) { zone := NewZoneFromPrivateKey(testZone, DecodeTorPrivateKey(testPrivateKey)) t.Logf("zone name %s", zone.Name()) if err := zone.AddRecordA("test", net.IPv4(1, 2, 3, 4), 3600); err != nil { t.Error(err) } if err := zone.AddRecordNS("@", "ns1."+zone.Name(), 3600*24); err != nil { t.Error(err) } if err := zone.AddRecordNS("@", "ns2."+zone.Name(), 3600*24); err != nil { t.Error(err) } if err := zone.AddRecordA("ns1", net.IPv4(1, 1, 1, 1), 3600*24); err != nil { t.Error(err) } if err := zone.AddRecordA("ns2", net.IPv4(2, 2, 2, 2), 3600*24); err != nil { t.Error(err) } enforcedZone := NewZoneFromPublicKey(zone.BaseZoneName(), zone.PubKey()) if err := enforcedZone.AddRecordSOA("@", "ns1."+zone.Name(), "mail."+zone.Name(), 31337, 10800, 3600, 604800, 3600, 3600); err != nil { t.Error(err) } zone.SetEnforcedEntries(enforcedZone.GetRRSet()) zone.AddZoneAlias("testalias." + zone.BaseZoneName()) zones, err := zone.Sign() if err != nil { t.Error(err) } for _, newZone := range zones { t.Logf("====== ZONE %s ======", newZone.Name()) for _, rr := range newZone.GetRRSet() { t.Logf(" %s\n", rr.String()) } t.Logf("auto-generated GLUE records:") for _, rr := range newZone.GetGlueRecords() { t.Logf("GLUE: %s\n", rr.String()) } } } func TestRecordTopLevelCNAME(t *testing.T) { zone := NewZoneFromPrivateKey(testZone, DecodeTorPrivateKey(testPrivateKey)) t.Logf("zone name %s", zone.Name()) if err := zone.AddRecordCNAME("@", "example.com.", 3600); err != nil { t.Error(err) } _, err := zone.Sign() if err == nil { t.Error("expected CNAME error") } else if err != TopLevelCNAMEError { t.Error(err) } }