package config import "testing" func TestValidateBindAddr(t *testing.T) { cases := []struct { addr string external bool wantErr bool }{ {"127.0.0.1:8484", false, false}, // loopback ok {"localhost:8484", false, false}, // loopback ok {"[::1]:8484", false, false}, // ipv6 loopback ok {":8484", false, true}, // all interfaces, not allowed {"0.0.0.0:8484", false, true}, // all interfaces, not allowed {"192.168.1.10:8484", false, true}, // LAN ip, not allowed {":8484", true, false}, // all interfaces, explicitly allowed {"0.0.0.0:8484", true, false}, // explicitly allowed {"192.168.1.10:8484", true, false}, // explicitly allowed } for _, c := range cases { err := ValidateBindAddr(c.addr, c.external) if (err != nil) != c.wantErr { t.Errorf("ValidateBindAddr(%q, external=%v): err=%v, wantErr=%v", c.addr, c.external, err, c.wantErr) } } }