Files
nadir-agent/internal/modules/networking/command_test.go
T
2026-06-24 17:29:45 +02:00

80 lines
2.6 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) {
for _, tt := range []struct {
name string
value string
valid bool
}{
{name: "eth0", value: "eth0", valid: true},
{name: "enp3s0", value: "enp3s0", valid: true},
{name: "wlan0", value: "wlan0", valid: true},
{name: "bridge", value: "br-lan", valid: true},
{name: "veth", value: "veth1234567", valid: true},
{name: "docker", value: "docker0", valid: true},
{name: "empty", value: "", valid: false},
{name: "leading dash", value: "-eth0", valid: false},
{name: "path", value: "/dev/net", valid: false},
{name: "space", value: "a b", valid: false},
{name: "too long", value: "name_that_is_way_too_long_for_linux", valid: false},
} {
t.Run(tt.name, func(t *testing.T) {
err := validateIface(tt.value)
if tt.valid && err != nil {
t.Errorf("validateIface(%q) unexpected error: %v", tt.value, err)
}
if !tt.valid && err == nil {
t.Errorf("validateIface(%q) expected error", tt.value)
}
})
}
}