// +build linux package sysutil import ( "bytes" "testing" "github.com/stretchr/testify/assert" ) const nl = "\n" func TestDHCPCDStaticConfig(t *testing.T) { testCases := []struct { name string data []byte want bool }{{ name: "has_not", data: []byte(`#comment` + nl + `# comment` + nl + `interface eth0` + nl + `static ip_address=192.168.0.1/24` + nl + `# interface wlan0` + nl + `static ip_address=192.168.1.1/24` + nl + `# comment` + nl, ), want: false, }, { name: "has", data: []byte(`#comment` + nl + `# comment` + nl + `interface eth0` + nl + `static ip_address=192.168.0.1/24` + nl + `# interface wlan0` + nl + `static ip_address=192.168.1.1/24` + nl + `# comment` + nl + `interface wlan0` + nl + `# comment` + nl + `static ip_address=192.168.2.1/24` + nl, ), want: true, }} for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { r := bytes.NewReader(tc.data) has, err := dhcpcdStaticConfig(r, "wlan0") assert.Nil(t, err) assert.Equal(t, tc.want, has) }) } } func TestIfacesStaticConfig(t *testing.T) { testCases := []struct { name string data []byte want bool }{{ name: "has_not", data: []byte(`allow-hotplug enp0s3` + nl + `#iface enp0s3 inet static` + nl + `# address 192.168.0.200` + nl + `# netmask 255.255.255.0` + nl + `# gateway 192.168.0.1` + nl + `iface enp0s3 inet dhcp` + nl, ), want: false, }, { name: "has", data: []byte(`allow-hotplug enp0s3` + nl + `iface enp0s3 inet static` + nl + ` address 192.168.0.200` + nl + ` netmask 255.255.255.0` + nl + ` gateway 192.168.0.1` + nl + `#iface enp0s3 inet dhcp` + nl, ), want: true, }} for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { r := bytes.NewReader(tc.data) has, err := ifacesStaticConfig(r, "enp0s3") assert.Nil(t, err) assert.Equal(t, tc.want, has) }) } } func TestSetStaticIPdhcpcdConf(t *testing.T) { dhcpcdConf := nl + `interface wlan0` + nl + `static ip_address=192.168.0.2/24` + nl + `static routers=192.168.0.1` + nl + `static domain_name_servers=192.168.0.2` + nl + nl s := updateStaticIPdhcpcdConf("wlan0", "192.168.0.2/24", "192.168.0.1", "192.168.0.2") assert.Equal(t, dhcpcdConf, s) // without gateway dhcpcdConf = nl + `interface wlan0` + nl + `static ip_address=192.168.0.2/24` + nl + `static domain_name_servers=192.168.0.2` + nl + nl s = updateStaticIPdhcpcdConf("wlan0", "192.168.0.2/24", "", "192.168.0.2") assert.Equal(t, dhcpcdConf, s) }