66 lines
2.2 KiB
Go
66 lines
2.2 KiB
Go
package networking
|
|
|
|
import "testing"
|
|
|
|
func TestValidateIfaceConfig(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
cfg IfaceConfig
|
|
wantErr bool
|
|
}{
|
|
{"valid static", IfaceConfig{
|
|
Method: "static", Address: "192.168.1.10", Prefix: 24, Gateway: "192.168.1.1",
|
|
DNS: []string{"1.1.1.1", "8.8.8.8"},
|
|
}, false},
|
|
{"valid static no gateway", IfaceConfig{
|
|
Method: "static", Address: "10.0.0.5", Prefix: 8,
|
|
}, false},
|
|
{"valid dhcp", IfaceConfig{Method: "dhcp"}, false},
|
|
{"valid with routes", IfaceConfig{
|
|
Method: "static", Address: "192.168.1.10", Prefix: 24,
|
|
Routes: []Route{
|
|
{Destination: "100.64.0.0/24", Gateway: "192.168.1.1"},
|
|
{Destination: "default", Gateway: "192.168.1.1"},
|
|
},
|
|
}, false},
|
|
{"static missing address", IfaceConfig{Method: "static", Prefix: 24}, true},
|
|
{"static bad address", IfaceConfig{Method: "static", Address: "not-an-ip", Prefix: 24}, true},
|
|
{"static bad gateway", IfaceConfig{Method: "static", Address: "10.0.0.1", Prefix: 24, Gateway: "bad"}, true},
|
|
{"bad method", IfaceConfig{Method: "pppoe"}, true},
|
|
{"bad dns", IfaceConfig{Method: "dhcp", DNS: []string{"not-an-ip"}}, true},
|
|
{"bad route destination", IfaceConfig{
|
|
Method: "static", Address: "10.0.0.1", Prefix: 24,
|
|
Routes: []Route{{Destination: "nope", Gateway: "10.0.0.1"}},
|
|
}, true},
|
|
{"bad route gateway", IfaceConfig{
|
|
Method: "static", Address: "10.0.0.1", Prefix: 24,
|
|
Routes: []Route{{Destination: "10.0.0.0/24", Gateway: "nope"}},
|
|
}, true},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
err := tt.cfg.validate()
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("validate() error = %v, wantErr %v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestValidateIface(t *testing.T) {
|
|
valid := []string{"eth0", "enp3s0", "wlan0", "br-lan", "veth1234567", "docker0"}
|
|
for _, name := range valid {
|
|
if err := validateIface(name); err != nil {
|
|
t.Errorf("validateIface(%q) unexpected error: %v", name, err)
|
|
}
|
|
}
|
|
|
|
invalid := []string{"", "-eth0", "/dev/net", "a b", "name_that_is_way_too_long_for_linux"}
|
|
for _, name := range invalid {
|
|
if err := validateIface(name); err == nil {
|
|
t.Errorf("validateIface(%q) expected error", name)
|
|
}
|
|
}
|
|
}
|