1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00

prettyzone: add tests

This commit is contained in:
Tom Limoncelli
2023-11-12 09:06:50 -05:00
parent 3c632eabdf
commit b034c66df7
4 changed files with 48 additions and 28 deletions

View File

@@ -248,20 +248,11 @@ var testdataZFCAA = `$TTL 300
IN CAA 0 issuewild ";"
`
// r is shorthand for strings.Repeat()
func r(s string, c int) string { return strings.Repeat(s, c) }
func TestWriteZoneFileTxt(t *testing.T) {
// exhibits explicit ttls and long name
//r10, _ := dns.NewRR(`t10.bosun.org. 300 IN TXT "ten4567890"`)
//r254, _ := dns.NewRR(`t254.bosun.org. 300 IN TXT "` + r("a", 254) + `"`)
//r255, _ := dns.NewRR(`t255.bosun.org. 300 IN TXT "` + r("b", 255) + `"`)
//r256, _ := dns.NewRR(`t256.bosun.org. 300 IN TXT "` + r("c", 255) + `" "` + r("D", 1) + `"`)
//r509, _ := dns.NewRR(`t509.bosun.org. 300 IN TXT "` + r("e", 255) + `" "` + r("F", 254) + `"`)
//r510, _ := dns.NewRR(`t510.bosun.org. 300 IN TXT "` + r("g", 255) + `" "` + r("H", 255) + `"`)
//r511, _ := dns.NewRR(`t511.bosun.org. 300 IN TXT "` + r("i", 255) + `" "` + r("J", 255) + `" "` + r("K", 1) + `"`)
//r512, _ := dns.NewRR(`t511.bosun.org. 300 IN TXT "` + r("L", 255) + `" "` + r("M", 255) + `" "` + r("N", 2) + `"`)
//r513, _ := dns.NewRR(`t511.bosun.org. 300 IN TXT "` + r("o", 255) + `" "` + r("p", 255) + `" "` + r("q", 3) + `"`)
// Do round-trip tests on various length TXT records.
t10 := `t10 IN TXT "ten4567890"`
t254 := `t254 IN TXT "` + r("a", 254) + `"`
t255 := `t255 IN TXT "` + r("b", 255) + `"`
@@ -293,23 +284,10 @@ func TestWriteZoneFileTxt(t *testing.T) {
// Reverse the process. Turn the zonefile into a list of records
parseAndRegen(t, buf, ez)
}
}
var testdataZFTXT = `$TTL 300
t10 IN TXT "ten4567890"
t254 IN TXT "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
t255 IN TXT "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
t256 IN TXT "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" "D"
t509 IN TXT "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
t510 IN TXT "ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg" "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"
t511 IN TXT "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii" "JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ" "K"
t512 IN TXT "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL" "MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM" "NN"
t513 IN TXT "ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo" "ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp" "qqq"
`
// Test 1 of each record type
func mustNewRR(s string) dns.RR {

View File

@@ -0,0 +1,16 @@
package prettyzone
import (
"strconv"
"strings"
)
func txtToNative(parts []string) string {
var quotedParts []string
for _, part := range parts {
quotedParts = append(quotedParts, strconv.Quote(part))
}
return strings.Join(quotedParts, " ")
}

View File

@@ -0,0 +1,28 @@
package prettyzone
import "testing"
func Test_txtToNative(t *testing.T) {
type args struct {
parts []string
}
tests := []struct {
name string
args args
want string
}{
{"1", args{[]string{`foo`}}, `"foo"`},
{"2", args{[]string{`one`, `two`}}, `"one" "two"`},
{"single", args{[]string{`sin'gle`}}, `"sin'gle"`},
{"double", args{[]string{`dou"ble`}}, `"dou\"ble"`},
{"outer", args{[]string{`"outer"`}}, `"\"outer\""`},
{"backtick", args{[]string{"back`tick"}}, "\"back`tick\""},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := txtToNative(tt.args.parts); got != tt.want {
t.Errorf("txtToNative() = %v, want %v", got, tt.want)
}
})
}
}

View File

@@ -14,7 +14,6 @@ import (
"github.com/StackExchange/dnscontrol/v4/models"
"github.com/StackExchange/dnscontrol/v4/pkg/diff2"
"github.com/StackExchange/dnscontrol/v4/pkg/printer"
"github.com/StackExchange/dnscontrol/v4/pkg/txtutil"
"github.com/StackExchange/dnscontrol/v4/providers"
)
@@ -523,10 +522,9 @@ func (a *azurednsProvider) recordToNativeDiff2(recordKey models.RecordKey, recor
recordSet.Properties.TxtRecords = []*adns.TxtRecord{}
}
// Empty TXT record needs to have no value set in it's properties
tt := rec.GetTargetField()
if tt != "" {
if rec.GetTargetField() != "" {
var txts []*string
for _, t := range txtutil.ToChunks(tt) {
for _, t := range rec.GetTargetTXTChunked255() {
txts = append(txts, to.StringPtr(t))
}
recordSet.Properties.TxtRecords = append(recordSet.Properties.TxtRecords, &adns.TxtRecord{Value: txts})