dns/sanitize_test.go

123 lines
3.4 KiB
Go
Raw Normal View History

package dns
2015-08-26 16:34:51 +10:00
import "testing"
func TestDedup(t *testing.T) {
2015-08-26 07:35:10 +10:00
// make it []string
testcases := map[[3]RR][]string{
[...]RR{
newRR(t, "mIek.nl. IN A 127.0.0.1"),
newRR(t, "mieK.nl. IN A 127.0.0.1"),
newRR(t, "miek.Nl. IN A 127.0.0.1"),
2015-08-26 07:35:10 +10:00
}: []string{"mIek.nl.\t3600\tIN\tA\t127.0.0.1"},
[...]RR{
newRR(t, "miEk.nl. 2000 IN A 127.0.0.1"),
newRR(t, "mieK.Nl. 1000 IN A 127.0.0.1"),
newRR(t, "Miek.nL. 500 IN A 127.0.0.1"),
2015-08-26 07:35:10 +10:00
}: []string{"miEk.nl.\t500\tIN\tA\t127.0.0.1"},
[...]RR{
newRR(t, "miek.nl. IN A 127.0.0.1"),
newRR(t, "miek.nl. CH A 127.0.0.1"),
newRR(t, "miek.nl. IN A 127.0.0.1"),
2015-08-26 07:35:10 +10:00
}: []string{"miek.nl.\t3600\tIN\tA\t127.0.0.1",
"miek.nl.\t3600\tCH\tA\t127.0.0.1",
},
[...]RR{
newRR(t, "miek.nl. CH A 127.0.0.1"),
newRR(t, "miek.nl. IN A 127.0.0.1"),
2015-08-26 07:35:10 +10:00
newRR(t, "miek.de. IN A 127.0.0.1"),
}: []string{"miek.nl.\t3600\tCH\tA\t127.0.0.1",
2015-08-26 16:34:51 +10:00
"miek.nl.\t3600\tIN\tA\t127.0.0.1",
2015-08-26 07:35:10 +10:00
"miek.de.\t3600\tIN\tA\t127.0.0.1",
},
[...]RR{
newRR(t, "miek.de. IN A 127.0.0.1"),
2015-08-26 16:34:51 +10:00
newRR(t, "miek.nl. 200 IN A 127.0.0.1"),
newRR(t, "miek.nl. 300 IN A 127.0.0.1"),
2015-08-26 07:35:10 +10:00
}: []string{"miek.de.\t3600\tIN\tA\t127.0.0.1",
2015-08-26 16:34:51 +10:00
"miek.nl.\t200\tIN\tA\t127.0.0.1",
2015-08-26 07:35:10 +10:00
},
}
for rr, expected := range testcases {
out := Dedup([]RR{rr[0], rr[1], rr[2]})
2015-08-26 16:34:51 +10:00
for i, o := range out {
if o.String() != expected[i] {
2015-08-26 21:19:22 +10:00
t.Fatalf("expected %v, got %v", expected[i], o.String())
2015-08-26 16:34:51 +10:00
}
}
}
}
2015-08-26 16:34:51 +10:00
func TestDedupWithCNAMEDNAME(t *testing.T) {
testcases := map[[4]RR][]string{
[...]RR{
newRR(t, "miek.Nl. CNAME a."),
newRR(t, "miEk.nl. IN A 127.0.0.1"),
newRR(t, "miek.Nl. IN A 127.0.0.1"),
newRR(t, "miek.de. IN A 127.0.0.1"),
}: []string{"miek.Nl.\t3600\tIN\tCNAME\ta.",
"miek.de.\t3600\tIN\tA\t127.0.0.1"},
[...]RR{
newRR(t, "Miek.nl. CNAME a."),
newRR(t, "mIek.nl. CNAME a."),
newRR(t, "miEk.nl. CNAME a."),
newRR(t, "mieK.nl. CNAME a."),
}: []string{"Miek.nl.\t3600\tIN\tCNAME\ta."},
2015-08-26 20:26:45 +10:00
[...]RR{
newRR(t, "miek.nl. CNAME a."),
newRR(t, "a.miek.nl. CNAME a."),
newRR(t, "a.miek.nl. CNAME a."),
newRR(t, "a.miek.nl. CNAME a."),
}: []string{"miek.nl.\t3600\tIN\tCNAME\ta.",
2015-08-26 21:19:38 +10:00
"a.miek.nl.\t3600\tIN\tCNAME\ta."},
2015-08-26 20:26:45 +10:00
[...]RR{
newRR(t, "miek.nl. DNAME a."),
newRR(t, "a.miek.nl. CNAME a."),
newRR(t, "b.miek.nl. IN A 127.0.0.1"),
newRR(t, "a.miek.de. IN A 127.0.0.1"),
}: []string{"miek.nl.\t3600\tIN\tDNAME\ta.",
2015-08-26 21:19:38 +10:00
"a.miek.de.\t3600\tIN\tA\t127.0.0.1"},
2015-08-26 20:26:45 +10:00
[...]RR{
newRR(t, "miek.nl. DNAME a."),
newRR(t, "a.miek.nl. DNAME a."),
newRR(t, "b.miek.nl. DNAME b."),
newRR(t, "a.b.miek.nl. DNAME a.b"),
}: []string{"miek.nl.\t3600\tIN\tDNAME\ta."},
2015-08-26 16:34:51 +10:00
}
for rr, expected := range testcases {
2015-08-26 20:26:45 +10:00
out := Dedup([]RR{rr[0], rr[1], rr[2], rr[3]})
2015-08-26 16:34:51 +10:00
for i, o := range out {
if o.String() != expected[i] {
2015-08-26 21:19:22 +10:00
t.Fatalf("expected %v, got %v", expected[i], o.String())
2015-08-26 16:34:51 +10:00
}
}
2015-08-26 07:35:10 +10:00
}
}
2015-08-26 21:19:22 +10:00
// BenchMark test as well TODO(miek)
func TestNormalizedString(t *testing.T) {
tests := map[RR]string{
newRR(t, "mIEk.Nl. 3600 IN A 127.0.0.1"): "miek.nl.\tIN\tA\t127.0.0.1",
newRR(t, "m\\ iek.nL. 3600 IN A 127.0.0.1"): "m\\ iek.nl.\tIN\tA\t127.0.0.1",
newRR(t, "m\\\tIeK.nl. 3600 in A 127.0.0.1"): "m\\tiek.nl.\tIN\tA\t127.0.0.1",
}
for tc, expected := range tests {
2015-08-26 07:35:10 +10:00
a1, _ := normalizedString(tc)
if a1 != expected {
t.Logf("expected %s, got %s", expected, a1)
t.Fail()
}
}
}
func newRR(t *testing.T, s string) RR {
r, e := NewRR(s)
if e != nil {
t.Logf("newRR: %s", e)
}
return r
}