refactor: fix bare errors in tests, extract magic numbers #93
@@ -15,6 +15,16 @@ import (
|
||||
probing "github.com/prometheus-community/pro-bing"
|
||||
)
|
||||
|
||||
const (
|
||||
maxErrorLength = 256
|
||||
defaultAcceptedCodes = "200-299"
|
||||
defaultHTTPStatusMin = 200
|
||||
defaultHTTPStatusMax = 300
|
||||
defaultTimeout = 5 * time.Second
|
||||
defaultDNSServer = "1.1.1.1"
|
||||
defaultDNSPort = "53"
|
||||
)
|
||||
|
||||
type CheckResult struct {
|
||||
SiteID int
|
||||
Status string // "UP", "DOWN", "SSL EXP"
|
||||
@@ -90,7 +100,7 @@ func runHTTPCheck(site models.Site, strict, insecure *http.Client, globalInsecur
|
||||
|
||||
if err != nil {
|
||||
result.Status = "DOWN"
|
||||
result.ErrorReason = truncateError(err.Error(), 256)
|
||||
result.ErrorReason = truncateError(err.Error(), maxErrorLength)
|
||||
return result
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
@@ -100,7 +110,7 @@ func runHTTPCheck(site models.Site, strict, insecure *http.Client, globalInsecur
|
||||
result.Status = "DOWN"
|
||||
expected := site.AcceptedCodes
|
||||
if expected == "" {
|
||||
expected = "200-299"
|
||||
expected = defaultAcceptedCodes
|
||||
}
|
||||
result.ErrorReason = fmt.Sprintf("HTTP %d (expected %s)", resp.StatusCode, expected)
|
||||
}
|
||||
@@ -160,7 +170,7 @@ func runPortCheck(site models.Site) CheckResult {
|
||||
latency := time.Since(start)
|
||||
|
||||
if err != nil {
|
||||
return CheckResult{SiteID: site.ID, Status: "DOWN", LatencyNs: latency.Nanoseconds(), ErrorReason: truncateError(err.Error(), 256)}
|
||||
return CheckResult{SiteID: site.ID, Status: "DOWN", LatencyNs: latency.Nanoseconds(), ErrorReason: truncateError(err.Error(), maxErrorLength)}
|
||||
}
|
||||
_ = conn.Close()
|
||||
return CheckResult{SiteID: site.ID, Status: "UP", LatencyNs: latency.Nanoseconds()}
|
||||
@@ -174,10 +184,10 @@ func runDNSCheck(site models.Site) CheckResult {
|
||||
|
||||
server := site.DNSServer
|
||||
if server == "" {
|
||||
server = "1.1.1.1"
|
||||
server = defaultDNSServer
|
||||
}
|
||||
if _, _, err := net.SplitHostPort(server); err != nil {
|
||||
server = net.JoinHostPort(server, "53")
|
||||
server = net.JoinHostPort(server, defaultDNSPort)
|
||||
}
|
||||
|
||||
qtype := dns.TypeA
|
||||
@@ -223,12 +233,12 @@ func siteTimeout(site models.Site) time.Duration {
|
||||
if site.Timeout > 0 {
|
||||
return time.Duration(site.Timeout) * time.Second
|
||||
}
|
||||
return 5 * time.Second
|
||||
return defaultTimeout
|
||||
}
|
||||
|
||||
func isCodeAccepted(code int, accepted string) bool {
|
||||
if accepted == "" {
|
||||
return code >= 200 && code < 300
|
||||
return code >= defaultHTTPStatusMin && code < defaultHTTPStatusMax
|
||||
}
|
||||
for _, part := range strings.Split(accepted, ",") {
|
||||
part = strings.TrimSpace(part)
|
||||
|
||||
@@ -138,7 +138,7 @@ func (e *Engine) AddLog(msg string) {
|
||||
}
|
||||
|
||||
func (e *Engine) InitLogs() {
|
||||
logs, err := e.db.LoadLogs(100)
|
||||
logs, err := e.db.LoadLogs(maxLogEntries)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -50,7 +50,10 @@ func TestSiteCRUD(t *testing.T) {
|
||||
t.Fatalf("UpdateSite: %v", err)
|
||||
}
|
||||
|
||||
sites, _ = s.GetSites()
|
||||
sites, err = s.GetSites()
|
||||
if err != nil {
|
||||
t.Fatalf("GetSites: %v", err)
|
||||
}
|
||||
if sites[0].Name != "Updated" {
|
||||
t.Errorf("expected name 'Updated', got '%s'", sites[0].Name)
|
||||
}
|
||||
@@ -59,7 +62,10 @@ func TestSiteCRUD(t *testing.T) {
|
||||
t.Fatalf("DeleteSite: %v", err)
|
||||
}
|
||||
|
||||
sites, _ = s.GetSites()
|
||||
sites, err = s.GetSites()
|
||||
if err != nil {
|
||||
t.Fatalf("GetSites: %v", err)
|
||||
}
|
||||
if len(sites) != 0 {
|
||||
t.Fatalf("expected 0 sites after delete, got %d", len(sites))
|
||||
}
|
||||
@@ -98,7 +104,10 @@ func TestAlertCRUD(t *testing.T) {
|
||||
t.Fatalf("UpdateAlert: %v", err)
|
||||
}
|
||||
|
||||
a, _ = s.GetAlert(a.ID)
|
||||
a, err = s.GetAlert(a.ID)
|
||||
if err != nil {
|
||||
t.Fatalf("GetAlert: %v", err)
|
||||
}
|
||||
if a.Type != "slack" {
|
||||
t.Errorf("expected type 'slack', got '%s'", a.Type)
|
||||
}
|
||||
@@ -107,7 +116,10 @@ func TestAlertCRUD(t *testing.T) {
|
||||
t.Fatalf("DeleteAlert: %v", err)
|
||||
}
|
||||
|
||||
alerts, _ = s.GetAllAlerts()
|
||||
alerts, err = s.GetAllAlerts()
|
||||
if err != nil {
|
||||
t.Fatalf("GetAllAlerts: %v", err)
|
||||
}
|
||||
if len(alerts) != 0 {
|
||||
t.Fatalf("expected 0 alerts after delete, got %d", len(alerts))
|
||||
}
|
||||
@@ -135,7 +147,10 @@ func TestUserCRUD(t *testing.T) {
|
||||
t.Fatalf("UpdateUser: %v", err)
|
||||
}
|
||||
|
||||
users, _ = s.GetAllUsers()
|
||||
users, err = s.GetAllUsers()
|
||||
if err != nil {
|
||||
t.Fatalf("GetAllUsers: %v", err)
|
||||
}
|
||||
if users[0].Username != "root" {
|
||||
t.Errorf("expected username 'root', got '%s'", users[0].Username)
|
||||
}
|
||||
@@ -144,7 +159,10 @@ func TestUserCRUD(t *testing.T) {
|
||||
t.Fatalf("DeleteUser: %v", err)
|
||||
}
|
||||
|
||||
users, _ = s.GetAllUsers()
|
||||
users, err = s.GetAllUsers()
|
||||
if err != nil {
|
||||
t.Fatalf("GetAllUsers: %v", err)
|
||||
}
|
||||
if len(users) != 0 {
|
||||
t.Fatalf("expected 0 users after delete, got %d", len(users))
|
||||
}
|
||||
@@ -157,7 +175,10 @@ func TestPushTokenGeneration(t *testing.T) {
|
||||
t.Fatalf("AddSite: %v", err)
|
||||
}
|
||||
|
||||
sites, _ := s.GetSites()
|
||||
sites, err := s.GetSites()
|
||||
if err != nil {
|
||||
t.Fatalf("GetSites: %v", err)
|
||||
}
|
||||
if len(sites) != 1 {
|
||||
t.Fatalf("expected 1 site, got %d", len(sites))
|
||||
}
|
||||
@@ -172,9 +193,15 @@ func TestPushTokenGeneration(t *testing.T) {
|
||||
func TestImportExport(t *testing.T) {
|
||||
s := newTestStore(t)
|
||||
|
||||
s.AddAlert("Test Alert", "webhook", map[string]string{"url": "https://example.com"})
|
||||
s.AddSite(models.Site{Name: "Site1", URL: "https://example.com", Type: "http", Interval: 30})
|
||||
s.AddUser("user1", "ssh-ed25519 KEY", "user")
|
||||
if err := s.AddAlert("Test Alert", "webhook", map[string]string{"url": "https://example.com"}); err != nil {
|
||||
t.Fatalf("AddAlert: %v", err)
|
||||
}
|
||||
if err := s.AddSite(models.Site{Name: "Site1", URL: "https://example.com", Type: "http", Interval: 30}); err != nil {
|
||||
t.Fatalf("AddSite: %v", err)
|
||||
}
|
||||
if err := s.AddUser("user1", "ssh-ed25519 KEY", "user"); err != nil {
|
||||
t.Fatalf("AddUser: %v", err)
|
||||
}
|
||||
|
||||
backup, err := s.ExportData()
|
||||
if err != nil {
|
||||
@@ -189,9 +216,18 @@ func TestImportExport(t *testing.T) {
|
||||
t.Fatalf("ImportData: %v", err)
|
||||
}
|
||||
|
||||
sites, _ := s2.GetSites()
|
||||
alerts, _ := s2.GetAllAlerts()
|
||||
users, _ := s2.GetAllUsers()
|
||||
sites, err := s2.GetSites()
|
||||
if err != nil {
|
||||
t.Fatalf("GetSites: %v", err)
|
||||
}
|
||||
alerts, err := s2.GetAllAlerts()
|
||||
if err != nil {
|
||||
t.Fatalf("GetAllAlerts: %v", err)
|
||||
}
|
||||
users, err := s2.GetAllUsers()
|
||||
if err != nil {
|
||||
t.Fatalf("GetAllUsers: %v", err)
|
||||
}
|
||||
if len(sites) != 1 || len(alerts) != 1 || len(users) != 1 {
|
||||
t.Fatalf("import mismatch: %d sites, %d alerts, %d users", len(sites), len(alerts), len(users))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user