Skip to content

Commit

Permalink
Test additional DNS recursion scenarios
Browse files Browse the repository at this point in the history
Test decrement of recursion counter
Test chained CNAMEs in single answer
Add suppor to bypass name check in FakeDNS handler function

Signed-off-by: Brandon Ewing <[email protected]>
  • Loading branch information
bewing committed Dec 6, 2024
1 parent 8590956 commit 1bd3335
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 6 deletions.
41 changes: 36 additions & 5 deletions controllers/utils/dns_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,14 +114,13 @@ func TestValidDigButMaxRecursion(t *testing.T) {
Port: port,
}
NewFakeDNS(testSettings).
AddCNAMERecord("foo.cloud.example.com.", "bar.cloud.example.com.").
AddARecord("bar.cloud.example.com.", net.IPv4(10, 1, 0, 3)).
Start().
RunTestFunc(func() {
result, err := Dig("foo.cloud.example.com", 0, testServer)
if err != nil {
panic(err)
}
assert.Equal(t, result, []string{})
result, err := Dig("foo.cloud.example.com", 1, testServer)
assert.Error(t, err)
assert.Nil(t, result)
})

}
Expand Down Expand Up @@ -215,6 +214,12 @@ func TestDigCNAME(t *testing.T) {
Host: server,
Port: port,
}
testSettings := FakeDNSSettings{
FakeDNSPort: port,
EdgeDNSZoneFQDN: "example.com.",
DNSZoneFQDN: "cloud.example.com.",
Dump: true,
}
NewFakeDNS(testSettings).
AddCNAMERecord("foo.cloud.example.com.", "bar.cloud.example.com.").
AddARecord("bar.cloud.example.com.", net.IPv4(10, 1, 0, 3)).
Expand All @@ -229,6 +234,32 @@ func TestDigCNAME(t *testing.T) {

}

func TestDigCNAMERecursion(t *testing.T) {
testServer := DNSServer{
Host: server,
Port: port,
}
testSettings := FakeDNSSettings{
FakeDNSPort: port,
EdgeDNSZoneFQDN: "example.com.",
DNSZoneFQDN: "cloud.example.com.",
Dump: true,
}
NewFakeDNS(testSettings).
AddCNAMERecord("foo.cloud.example.com.", "bar.cloud.example.com.").
AddCNAMERecord("bar.cloud.example.com.", "baz.cloud.example.com.").
AddARecord("baz.cloud.example.com.", net.IPv4(10, 1, 0, 3)).
Start().
RunTestFunc(func() {
result, err := Dig("foo.cloud.example.com", 8, testServer)
if err != nil {
panic(err)
}
assert.Equal(t, result, []string{"10.1.0.3"})
})

}

func connected() (ok bool) {
ctx := context.Background()
ctx, cancel := context.WithCancel(ctx)
Expand Down
3 changes: 2 additions & 1 deletion controllers/utils/fakedns.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ type FakeDNSSettings struct {
FakeDNSPort int
EdgeDNSZoneFQDN string
DNSZoneFQDN string
Dump bool
}

// DNSMock acts as DNS server but returns mock values
Expand Down Expand Up @@ -199,7 +200,7 @@ func (m *DNSMock) handleReflect(w dns.ResponseWriter, r *dns.Msg) {
if m.records[r.Question[0].Qtype] != nil {
for _, rr := range m.records[r.Question[0].Qtype] {
fqdn := strings.Split(rr.String(), "\t")[0]
if fqdn == r.Question[0].Name {
if fqdn == r.Question[0].Name || m.settings.Dump {
msg.Answer = append(msg.Answer, rr)
}
}
Expand Down

0 comments on commit 1bd3335

Please sign in to comment.