2015-08-25 07:02:32 +10:00
|
|
|
package dns
|
|
|
|
|
2015-08-26 07:35:10 +10:00
|
|
|
import (
|
|
|
|
"reflect"
|
|
|
|
"testing"
|
|
|
|
)
|
2015-08-25 07:02:32 +10:00
|
|
|
|
|
|
|
func TestDedup(t *testing.T) {
|
2015-08-26 07:35:10 +10:00
|
|
|
// make it []string
|
|
|
|
testcases := map[[3]RR][]string{
|
2015-08-25 17:39:43 +10:00
|
|
|
[...]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"},
|
2015-08-25 17:39:43 +10:00
|
|
|
[...]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"},
|
2015-08-25 17:39:43 +10:00
|
|
|
[...]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",
|
|
|
|
},
|
2015-08-25 17:39:43 +10:00
|
|
|
[...]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",
|
|
|
|
"miek.de.\t3600\tIN\tA\t127.0.0.1",
|
|
|
|
},
|
|
|
|
[...]RR{
|
|
|
|
newRR(t, "miek.de. IN A 127.0.0.1"),
|
|
|
|
newRR(t, "miek.nl. IN A 127.0.0.1"),
|
2015-08-25 17:39:43 +10:00
|
|
|
newRR(t, "miek.nl. IN A 127.0.0.1"),
|
2015-08-26 07:35:10 +10:00
|
|
|
}: []string{"miek.de.\t3600\tIN\tA\t127.0.0.1",
|
|
|
|
"miek.de.\t3600\tIN\tA\t127.0.0.1",
|
|
|
|
},
|
2015-08-25 17:39:43 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
for rr, expected := range testcases {
|
|
|
|
out := Dedup([]RR{rr[0], rr[1], rr[2]})
|
2015-08-26 07:35:10 +10:00
|
|
|
if !reflect.DeepEqual(out, expected) {
|
|
|
|
t.Fatalf("expected %v, got %v", expected, out)
|
2015-08-25 17:39:43 +10:00
|
|
|
}
|
2015-08-25 07:02:32 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-08-26 07:35:10 +10:00
|
|
|
func TestDedupWithCNAME(t *testing.T) {
|
|
|
|
in := []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"),
|
|
|
|
}
|
|
|
|
out := Dedup(in)
|
|
|
|
t.Logf("%+v\n", out)
|
|
|
|
}
|
|
|
|
|
2015-08-25 07:02:32 +10:00
|
|
|
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)
|
2015-08-25 07:02:32 +10:00
|
|
|
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
|
|
|
|
}
|