package netstack
import (
"testing"
)
func TestGuestNetworkConfigValidate(t *testing.T) {
valid := GuestNetworkConfig{
GuestIP: "192.168.100.21",
PrefixLength: 24,
Gateway: "192.168.100.2",
DNS: DNSConfig{Nameservers: []string{"10.0.0.53"}},
}
if err := valid.Validate(); err != nil {
t.Fatalf("Validate() error = %v", err)
}
for _, tt := range []struct {
name string
mutate func(*GuestNetworkConfig)
}{
{name: "IPv6 guest", mutate: func(c *GuestNetworkConfig) { c.GuestIP = "fd00::2" }},
{name: "invalid prefix", mutate: func(c *GuestNetworkConfig) { c.PrefixLength = 33 }},
{name: "gateway outside subnet", mutate: func(c *GuestNetworkConfig) { c.Gateway = "192.168.101.2" }},
{name: "same address", mutate: func(c *GuestNetworkConfig) { c.Gateway = c.GuestIP }},
{name: "loopback DNS", mutate: func(c *GuestNetworkConfig) { c.DNS.Nameservers = []string{"127.0.0.53"} }},
} {
t.Run(tt.name, func(t *testing.T) {
cfg := valid.Clone()
tt.mutate(&cfg)
if err := cfg.Validate(); err == nil {
t.Fatal("Validate() error = nil, want error")
}
})
}
}