package check import ( "io/fs" "os" "path/filepath" "strings" "testing" "git.coffeylabs.org/coffey-labs/hotdog-cms/internal/build" "git.coffeylabs.org/coffey-labs/hotdog-cms/starter" ) func starterSite(t *testing.T, extra string) string { t.Helper() dir := t.TempDir() err := fs.WalkDir(starter.Files, "site", func(p string, d fs.DirEntry, err error) error { if err != nil { return err } target := filepath.Join(dir, strings.TrimPrefix(p, "site")) if d.IsDir() { return os.MkdirAll(target, 0o755) } data, _ := starter.Files.ReadFile(p) return os.WriteFile(target, []byte(strings.ReplaceAll(string(data), "{{SITE_NAME}}", "Test")), 0o644) }) if err != nil { t.Fatal(err) } f, _ := os.OpenFile(filepath.Join(dir, "site.yaml"), os.O_APPEND|os.O_WRONLY, 0o644) f.WriteString(extra) f.Close() return dir } func TestConsentAndPrivacy(t *testing.T) { dir := starterSite(t, "analytics: { provider: plausible, domain: example.org, src: \"https://stats.example.net/js/script.js\" }\nprivacy: { controller: Test Co, contact: privacy@example.org }\n") res, err := build.Run(build.Options{SiteDir: dir}) if err != nil { t.Fatal(err) } home, _ := os.ReadFile(filepath.Join(res.Out, "index.html")) h := string(home) for _, want := range []string{`data-hotdog-consent data-provider="plausible" data-domain="example.org" data-src="https://stats.example.net/js/script.js" data-privacy="/privacy/" data-hosts="https://stats.example.net"`, `/hotdog-consent.`, `data-hotdog-consent-open>Cookie settings`} { if !strings.Contains(h, want) { t.Errorf("home missing %s", want) } } if strings.Contains(h, `