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) } } }