checker-reverse-zone/checker/report_test.go

81 lines
2.1 KiB
Go

package checker
import (
"encoding/json"
"strings"
"testing"
sdk "git.happydns.org/checker-sdk-go/checker"
)
func TestReportRenders(t *testing.T) {
data := ReverseZoneData{
Zone: "1.168.192.in-addr.arpa.",
IsReverseZone: true,
PTRCount: 3,
Entries: []PTREntry{
{
OwnerName: "10.1.168.192.in-addr.arpa.",
ReverseIP: "192.168.1.10",
Targets: []string{"mail.example.com."},
TargetSyntaxValid: true,
ForwardAddresses: []ForwardAddress{{Type: "A", Address: "192.168.1.10"}},
ForwardMatch: true,
TargetResolves: true,
},
{
OwnerName: "11.1.168.192.in-addr.arpa.",
ReverseIP: "192.168.1.11",
Targets: []string{"web.example.com."},
TargetSyntaxValid: true,
ForwardAddresses: []ForwardAddress{{Type: "A", Address: "203.0.113.5"}},
ForwardMatch: false,
TargetResolves: true,
},
{
OwnerName: "12.1.168.192.in-addr.arpa.",
ReverseIP: "192.168.1.12",
Targets: []string{"ghost.example.com."},
TargetSyntaxValid: true,
TargetResolves: false,
},
},
}
raw, err := json.Marshal(data)
if err != nil {
t.Fatalf("marshal: %v", err)
}
p := &reverseZoneProvider{}
html, err := p.GetHTMLReport(sdk.StaticReportContext(raw))
if err != nil {
t.Fatalf("report: %v", err)
}
for _, want := range []string{
"FCrDNS failures detected",
"web.example.com.",
"ghost.example.com.",
"target unresolved",
"FCrDNS mismatch",
} {
if !strings.Contains(html, want) {
t.Errorf("expected report to contain %q\n--- HTML ---\n%s", want, html)
}
}
}
func TestBuildOwnerName(t *testing.T) {
cases := []struct {
sub, zone, want string
}{
{"42", "1.168.192.in-addr.arpa", "42.1.168.192.in-addr.arpa."},
{"", "1.168.192.in-addr.arpa", "1.168.192.in-addr.arpa."},
{"@", "1.168.192.in-addr.arpa", "1.168.192.in-addr.arpa."},
{"1.0", "0.0.10.in-addr.arpa", "1.0.0.0.10.in-addr.arpa."},
}
for _, c := range cases {
got := buildOwnerName(c.sub, c.zone)
if got != c.want {
t.Errorf("buildOwnerName(%q,%q)=%q, want %q", c.sub, c.zone, got, c.want)
}
}
}