package app import ( "io" "testing" "time" ) func TestPortalTemplateExecutes(t *testing.T) { t.Parallel() templates, err := parseTemplates() 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() 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", Hostname: "pve01", CreatedAt: time.Now(), }} if err := templates.ExecuteTemplate(io.Discard, "audit.html", data); err != nil { t.Fatal(err) } }