|
@@ -16,6 +16,19 @@ import (
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/stretchr/testify/require"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+type stubDNSWriter struct{}
|
|
|
|
|
+
|
|
|
|
|
+func (stubDNSWriter) LocalAddr() net.Addr { return &net.UDPAddr{} }
|
|
|
|
|
+func (stubDNSWriter) RemoteAddr() net.Addr {
|
|
|
|
|
+ return &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 5353}
|
|
|
|
|
+}
|
|
|
|
|
+func (stubDNSWriter) Write([]byte) (int, error) { return 0, nil }
|
|
|
|
|
+func (stubDNSWriter) WriteMsg(*dns.Msg) error { return nil }
|
|
|
|
|
+func (stubDNSWriter) Close() error { return nil }
|
|
|
|
|
+func (stubDNSWriter) TsigStatus() error { return nil }
|
|
|
|
|
+func (stubDNSWriter) TsigTimersOnly(bool) {}
|
|
|
|
|
+func (stubDNSWriter) Hijack() {}
|
|
|
|
|
+
|
|
|
func TestParsequery(t *testing.T) {
|
|
func TestParsequery(t *testing.T) {
|
|
|
l := logrus.New()
|
|
l := logrus.New()
|
|
|
hostMap := &HostMap{}
|
|
hostMap := &HostMap{}
|
|
@@ -70,6 +83,19 @@ func TestParsequery(t *testing.T) {
|
|
|
ds.parseQuery(m, nil)
|
|
ds.parseQuery(m, nil)
|
|
|
assert.Empty(t, m.Answer)
|
|
assert.Empty(t, m.Answer)
|
|
|
assert.Equal(t, dns.RcodeNameError, m.Rcode)
|
|
assert.Equal(t, dns.RcodeNameError, m.Rcode)
|
|
|
|
|
+
|
|
|
|
|
+ // short lookups should not fail
|
|
|
|
|
+ m = &dns.Msg{}
|
|
|
|
|
+ m.Question = []dns.Question{{Name: "", Qtype: dns.TypeTXT, Qclass: dns.ClassINET}}
|
|
|
|
|
+ ds.parseQuery(m, stubDNSWriter{})
|
|
|
|
|
+ assert.Empty(t, m.Answer)
|
|
|
|
|
+ assert.Equal(t, dns.RcodeNameError, m.Rcode)
|
|
|
|
|
+
|
|
|
|
|
+ m = &dns.Msg{}
|
|
|
|
|
+ m.Question = []dns.Question{{Name: ".", Qtype: dns.TypeTXT, Qclass: dns.ClassINET}}
|
|
|
|
|
+ ds.parseQuery(m, stubDNSWriter{})
|
|
|
|
|
+ assert.Empty(t, m.Answer)
|
|
|
|
|
+ assert.Equal(t, dns.RcodeNameError, m.Rcode)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func Test_getDnsServerAddr(t *testing.T) {
|
|
func Test_getDnsServerAddr(t *testing.T) {
|