81 lines
2.1 KiB
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)
|
|
}
|
|
}
|
|
}
|