package handlers import "testing" // validPrimaryHost bewacht das einzige variable Argument einer sudo-Regel // (`edgeguard-ctl cluster-setup-standby *`). Der Aufruf laeuft zwar ohne // Shell, aber die Pruefung soll trotzdem halten was sie verspricht. func TestValidPrimaryHost(t *testing.T) { valid := []string{ "utm-1.netcell-it.de", "primary", "10.0.5.1", "89.163.205.6", "2001:db8::1", "a-b-c.example.com", } for _, h := range valid { if !validPrimaryHost(h) { t.Errorf("validPrimaryHost(%q) = false, erwartet true", h) } } invalid := []string{ "", " ", "host; rm -rf /", "host && reboot", "host|tee", "host$(id)", "host`id`", "--tls-dir=/tmp/evil", "host with space", "host\nsecond-line", "..", "host..example.com", "/etc/passwd", } for _, h := range invalid { if validPrimaryHost(h) { t.Errorf("validPrimaryHost(%q) = true, erwartet false", h) } } } func TestValidPrimaryHostRejectsOverlongName(t *testing.T) { long := make([]byte, 254) for i := range long { long[i] = 'a' } if validPrimaryHost(string(long)) { t.Error("Hostname > 253 Zeichen muss abgelehnt werden") } }