feat: implement referral resolution for nameserver names without glue records (HAN-381) (#7)
CI / test (push) Failing after 2m58s

Co-authored-by: Hansen IT Solutions <gary@hansenits.com>
Co-committed-by: Hansen IT Solutions <gary@hansenits.com>
This commit was merged in pull request #7.
This commit is contained in:
2026-06-07 06:09:49 +00:00
committed by multica-agent
parent 39529dacbb
commit feb5c68b39
3 changed files with 360 additions and 3 deletions
+48
View File
@@ -109,3 +109,51 @@ func TestResolutionStateString(t *testing.T) {
})
}
}
func TestCircularReferralError(t *testing.T) {
err := &CircularReferralError{
Name: "ns.example.com.",
Chain: []string{"ns1.example.com.", "ns2.example.com."},
}
expected := "circular referral detected for ns.example.com.: [ns1.example.com. ns2.example.com.]"
if err.Error() != expected {
t.Errorf("Error() = %q, want %q", err.Error(), expected)
}
}
func TestUnresolvableNameserverError(t *testing.T) {
err := &UnresolvableNameserverError{
Name: "ns.example.com.",
Reason: "NXDOMAIN",
}
expected := "unresolvable nameserver ns.example.com.: NXDOMAIN"
if err.Error() != expected {
t.Errorf("Error() = %q, want %q", err.Error(), expected)
}
}
func TestGetVisitedNames(t *testing.T) {
visited := map[string]bool{
"ns1.example.com.": true,
"ns2.example.com.": true,
"ns3.example.com.": true,
}
names := getVisitedNames(visited)
if len(names) != 3 {
t.Errorf("got %d names, want 3", len(names))
}
seen := make(map[string]bool)
for _, name := range names {
if seen[name] {
t.Errorf("duplicate name: %s", name)
}
seen[name] = true
if !visited[name] {
t.Errorf("unexpected name: %s", name)
}
}
}