72 lines
1.3 KiB
Go
72 lines
1.3 KiB
Go
|
// +build ignore
|
||
|
|
||
|
package mdns
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/miekg/dns"
|
||
|
)
|
||
|
|
||
|
type mockMDNSService struct{}
|
||
|
|
||
|
func (s *mockMDNSService) Records(q dns.Question) []dns.RR {
|
||
|
return []dns.RR{
|
||
|
&dns.PTR{
|
||
|
Hdr: dns.RR_Header{
|
||
|
Name: "fakerecord",
|
||
|
Rrtype: dns.TypePTR,
|
||
|
Class: dns.ClassINET,
|
||
|
Ttl: 42,
|
||
|
},
|
||
|
Ptr: "fake.local.",
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (s *mockMDNSService) Announcement() []dns.RR {
|
||
|
return []dns.RR{
|
||
|
&dns.PTR{
|
||
|
Hdr: dns.RR_Header{
|
||
|
Name: "fakeannounce",
|
||
|
Rrtype: dns.TypePTR,
|
||
|
Class: dns.ClassINET,
|
||
|
Ttl: 42,
|
||
|
},
|
||
|
Ptr: "fake.local.",
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestDNSSDServiceRecords(t *testing.T) {
|
||
|
s := &DNSSDService{
|
||
|
MDNSService: &MDNSService{
|
||
|
serviceAddr: "_foobar._tcp.local.",
|
||
|
Domain: "local",
|
||
|
},
|
||
|
}
|
||
|
q := dns.Question{
|
||
|
Name: "_services._dns-sd._udp.local.",
|
||
|
Qtype: dns.TypePTR,
|
||
|
Qclass: dns.ClassINET,
|
||
|
}
|
||
|
recs := s.Records(q)
|
||
|
if got, want := len(recs), 1; got != want {
|
||
|
t.Fatalf("s.Records(%v) returned %v records, want %v", q, got, want)
|
||
|
}
|
||
|
|
||
|
want := dns.RR(&dns.PTR{
|
||
|
Hdr: dns.RR_Header{
|
||
|
Name: "_services._dns-sd._udp.local.",
|
||
|
Rrtype: dns.TypePTR,
|
||
|
Class: dns.ClassINET,
|
||
|
Ttl: defaultTTL,
|
||
|
},
|
||
|
Ptr: "_foobar._tcp.local.",
|
||
|
})
|
||
|
if got := recs[0]; !reflect.DeepEqual(got, want) {
|
||
|
t.Errorf("s.Records()[0] = %v, want %v", got, want)
|
||
|
}
|
||
|
}
|