package crowdsec import ( "strings" "testing" ) func TestRenderWhitelist(t *testing.T) { t.Run("hosts werden host-genau eingetragen", func(t *testing.T) { out := string(renderWhitelist([]string{"control.netcell-it.de", "admin.example.com"})) if !strings.Contains(out, "evt.Parsed.http_host in ['control.netcell-it.de', 'admin.example.com']") { t.Fatalf("erwartete host-Liste fehlt:\n%s", out) } if !strings.Contains(out, "name: edgeguard/admin-hosts-whitelist") { t.Fatalf("Parser-Name fehlt:\n%s", out) } }) t.Run("leere Liste → in [] (matcht nie, Datei gültig)", func(t *testing.T) { out := string(renderWhitelist(nil)) if !strings.Contains(out, "evt.Parsed.http_host in []") { t.Fatalf("erwarte leeres in []:\n%s", out) } }) t.Run("leere/whitespace-Hosts werden gefiltert, Quotes escaped", func(t *testing.T) { out := string(renderWhitelist([]string{" ", "a'b.de", ""})) if !strings.Contains(out, "'a''b.de'") { t.Fatalf("Quote-Escaping falsch:\n%s", out) } if strings.Contains(out, "'', ") || strings.Contains(out, "[''") { t.Fatalf("leere Hosts nicht gefiltert:\n%s", out) } }) }