mirror of https://github.com/slackhq/nebula.git
74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
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))
|
|
}
|