Files
TA-Deployment-Broker/internal/app/server_test.go
T
David Schroeder 0ed0fb5817 update
2026-07-26 10:33:50 -05:00

113 lines
2.7 KiB
Go

package app
import (
"bytes"
"io"
"strings"
"testing"
"time"
)
func TestPortalTemplateExecutes(t *testing.T) {
t.Parallel()
templates, err := parseTemplates(time.UTC)
if err != nil {
t.Fatal(err)
}
err = templates.ExecuteTemplate(io.Discard, "portal.html", pageData{
Title: "Test",
Technician: &technician{DisplayName: "Technician"},
Packages: []packageRecord{{
ID: 1,
Slug: "sentinelone-linux",
DisplayName: "SentinelOne Linux Agent",
PackageVersion: "26.1.1.31",
Enabled: true,
}},
Actions: []actionRecord{{
Slug: "install-rmm",
DisplayName: "Install RMM",
Enabled: true,
}},
Authorizations: []authorizationRecord{{
ID: 1,
CreatedBy: "taiadmin",
ExpiresAt: time.Now().Add(time.Hour),
Packages: "SentinelOne Linux Agent",
Actions: "Install RMM",
}},
})
if err != nil {
t.Fatal(err)
}
}
func TestPackageAndAuditTemplatesExecute(t *testing.T) {
t.Parallel()
templates, err := parseTemplates(time.UTC)
if err != nil {
t.Fatal(err)
}
data := pageData{
Title: "Test",
Technician: &technician{DisplayName: "Technician"},
CSRFToken: "csrf",
CurrentView: "packages",
Packages: []packageRecord{{
ID: 1,
Slug: "sentinelone-linux",
DisplayName: "SentinelOne Linux Agent",
PackageVersion: "26.1.1.31",
Enabled: true,
}},
}
if err := templates.ExecuteTemplate(io.Discard, "packages.html", data); err != nil {
t.Fatal(err)
}
data.CurrentView = "audit"
data.AuditFilters.TimeRange = "30d"
data.AuditEventTypes = []string{"package_downloaded"}
data.AuditEvents = []auditRecord{{
EventType: "package_downloaded",
CustomerLabel: "Acme cluster refresh",
Hostname: "pve01",
SourceIP: "203.0.113.10",
CreatedAt: time.Now(),
}}
if err := templates.ExecuteTemplate(io.Discard, "audit.html", data); err != nil {
t.Fatal(err)
}
}
func TestAuditTemplateUsesConfiguredTimeZone(t *testing.T) {
t.Parallel()
location, err := time.LoadLocation("America/Chicago")
if err != nil {
t.Fatal(err)
}
templates, err := parseTemplates(location)
if err != nil {
t.Fatal(err)
}
var output bytes.Buffer
err = templates.ExecuteTemplate(&output, "audit.html", pageData{
Title: "Test",
Technician: &technician{DisplayName: "Technician"},
CurrentView: "audit",
AuditFilters: auditFilters{
TimeRange: "30d",
},
AuditEvents: []auditRecord{{
EventType: "code_exchanged",
CreatedAt: time.Date(2026, time.January, 15, 12, 0, 0, 0, time.UTC),
}},
})
if err != nil {
t.Fatal(err)
}
if !strings.Contains(output.String(), "Jan 15, 2026 6:00 AM CST") {
t.Fatalf("audit timestamp was not rendered in America/Chicago: %s", output.String())
}
}