package nebula import ( "net/netip" "testing" "github.com/miekg/dns" "github.com/sirupsen/logrus" "github.com/slackhq/nebula/config" "github.com/stretchr/testify/assert" ) func TestParsequery(t *testing.T) { l := logrus.New() hostMap := &HostMap{} ds := newDnsRecords(l, &CertState{}, hostMap) addrs := []netip.Addr{ netip.MustParseAddr("1.2.3.4"), netip.MustParseAddr("1.2.3.5"), netip.MustParseAddr("fd01::24"), netip.MustParseAddr("fd01::25"), } ds.Add("test.com.com", addrs) m := &dns.Msg{} m.SetQuestion("test.com.com", dns.TypeA) ds.parseQuery(m, nil) assert.NotNil(t, m.Answer) assert.Equal(t, "1.2.3.4", m.Answer[0].(*dns.A).A.String()) m = &dns.Msg{} m.SetQuestion("test.com.com", dns.TypeAAAA) ds.parseQuery(m, nil) assert.NotNil(t, m.Answer) assert.Equal(t, "fd01::24", m.Answer[0].(*dns.AAAA).AAAA.String()) } func Test_getDnsServerAddr(t *testing.T) { c := config.NewC(nil) c.Settings["lighthouse"] = map[interface{}]interface{}{ "dns": map[interface{}]interface{}{ "host": "0.0.0.0", "port": "1", }, } assert.Equal(t, "0.0.0.0:1", getDnsServerAddr(c)) c.Settings["lighthouse"] = map[interface{}]interface{}{ "dns": map[interface{}]interface{}{ "host": "::", "port": "1", }, } assert.Equal(t, "[::]:1", getDnsServerAddr(c)) c.Settings["lighthouse"] = map[interface{}]interface{}{ "dns": map[interface{}]interface{}{ "host": "[::]", "port": "1", }, } assert.Equal(t, "[::]:1", getDnsServerAddr(c)) // Make sure whitespace doesn't mess us up c.Settings["lighthouse"] = map[interface{}]interface{}{ "dns": map[interface{}]interface{}{ "host": "[::] ", "port": "1", }, } assert.Equal(t, "[::]:1", getDnsServerAddr(c)) }