package templates_test import ( "bytes" "html/template" "strings" "testing" "git.eeqj.de/sneak/routewatch/internal/templates" ) // TestFooterLicense renders the home and status pages and expects each footer // to name the licence in LICENSE, MIT, and not WTFPL. func TestFooterLicense(t *testing.T) { t.Parallel() const ( license = "MIT" wrongLicense = "WTFPL" ) pages := map[string]*template.Template{ "index": templates.IndexTemplate(), "status": templates.StatusTemplate(), } for name, tmpl := range pages { t.Run(name, func(t *testing.T) { t.Parallel() var page bytes.Buffer err := tmpl.Execute(&page, struct{ CSPNonce string }{}) if err != nil { t.Fatalf("rendering the page: %v", err) } _, footer, found := strings.Cut(page.String(), "") if !strings.Contains(footer, license) { t.Errorf("footer does not name %s: %q", license, footer) } if strings.Contains(footer, wrongLicense) { t.Errorf("footer names %s: %q", wrongLicense, footer) } }) } }