From 364a7423a526d4fe5d81be9f35d30aa83f85dbfb Mon Sep 17 00:00:00 2001 From: tiriplicamihai Date: Tue, 30 Apr 2019 18:38:07 +0300 Subject: [PATCH] Add tests for dns snooper. --- probe/endpoint/dns_snooper_test.go | 74 ++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 probe/endpoint/dns_snooper_test.go diff --git a/probe/endpoint/dns_snooper_test.go b/probe/endpoint/dns_snooper_test.go new file mode 100644 index 000000000..0dc9de156 --- /dev/null +++ b/probe/endpoint/dns_snooper_test.go @@ -0,0 +1,74 @@ +// +build linux,amd64 linux,ppc64le +package endpoint + +import ( + "net" + "testing" + + "github.com/google/gopacket/layers" +) + +func TestprocessDNSMessageMultipleCNAME(t *testing.T) { + domain := "dummy.com" + question := layers.DNSQuestion{ + Name: []byte(domain), + Type: layers.DNSTypeA, + } + + ipAddressCNAME := "127.0.0.1" + ipAddress := "127.0.1.1" + answers := []layers.DNSResourceRecord{ + layers.DNSResourceRecord{ + Name: []byte("api.dummy.com"), + Type: layers.DNSTypeCNAME, + Class: layers.DNSClassIN, + }, + layers.DNSResourceRecord{ + Name: []byte("star.c10r.dummy.com"), + Type: layers.DNSTypeCNAME, + Class: layers.DNSClassIN, + }, + layers.DNSResourceRecord{ + Name: []byte("dummy.com"), + Type: layers.DNSTypeA, + Class: layers.DNSClassIN, + IP: net.ParseIP(ipAddress), + }, + layers.DNSResourceRecord{ + Name: []byte("star.c10r.dummy.com"), + Type: layers.DNSTypeA, + Class: layers.DNSClassIN, + IP: net.ParseIP(ipAddressCNAME), + }, + } + + dns := layers.DNS{ + ResponseCode: layers.DNSResponseCodeNoErr, + Questions: []layers.DNSQuestion{question}, + Answers: answers, + } + + snooper := &DNSSnooper{} + + snooper.processDNSMessage(&dns) + + existingDomains, err := snooper.reverseDNSCache.Get(ipAddressCNAME) + + if err != nil { + t.Errorf("A domain should have been inserted for the given CNAME IP:%v", err) + } + + if _, ok := existingDomains.(map[string]struct{})[domain]; !ok { + t.Errorf("Domain %s should have been inserted", domain) + } + + existingDomains, err = snooper.reverseDNSCache.Get(ipAddress) + + if err != nil { + t.Errorf("A domain should have been inserted for the given IP:%v", err) + } + + if _, ok := existingDomains.(map[string]struct{})[domain]; !ok { + t.Errorf("Domain %s should have been inserted", domain) + } +}