dashboard and status API show why a check failed (closes #225)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
/api/v1/status now gives `error` for each nameserver entry and certificate entry whose status is `error`, copied from the state, which already kept it. The dashboard shows that reason in place of the records for a failed nameserver, which used to show the same `-` as one that answered with no records, and across the CN, issuer and expiry cells for a failed certificate, wrapped at a width of 20rem so the long TLS error does not narrow the Endpoint column. The dashboard stylesheet is a trimmed build, so the new markup uses only classes the page already had. README Web Dashboard and HTTP API say so. Model: opus-5-5
This commit was merged in pull request #235.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package handlers_test
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@@ -78,3 +79,39 @@ func TestFormatRecords(t *testing.T) {
|
||||
t.Errorf("unexpected format: %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
// dashboardRow returns the table row of page that contains name.
|
||||
func dashboardRow(t *testing.T, page string, name string) string {
|
||||
t.Helper()
|
||||
|
||||
for row := range strings.SplitSeq(page, "<tr") {
|
||||
if strings.Contains(row, name) {
|
||||
return row
|
||||
}
|
||||
}
|
||||
|
||||
t.Fatalf("dashboard has no row containing %q", name)
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// TestDashboardShowsFailureReasons checks that the dashboard shows the
|
||||
// reason in the row of a failed nameserver and of a failed certificate,
|
||||
// and not in the row of a nameserver that answered.
|
||||
func TestDashboardShowsFailureReasons(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
page := get(t, newHandlersWithFailures(t).HandleDashboard())
|
||||
|
||||
if !strings.Contains(dashboardRow(t, page, failedNS), nsFailureReason) {
|
||||
t.Errorf("row of %s does not show %q", failedNS, nsFailureReason)
|
||||
}
|
||||
|
||||
if strings.Contains(dashboardRow(t, page, answeringNS), nsFailureReason) {
|
||||
t.Errorf("row of %s shows %q", answeringNS, nsFailureReason)
|
||||
}
|
||||
|
||||
if !strings.Contains(dashboardRow(t, page, certKey), certFailedReason) {
|
||||
t.Errorf("row of %s does not show %q", certKey, certFailedReason)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user