kvm/internal/network/validate_test.go

152 lines
4.1 KiB
Go

package network
import (
"testing"
"github.com/guregu/null/v6"
"github.com/stretchr/testify/assert"
)
func TestValidateInvalidIpv4Netmask(t *testing.T) {
_, err := parseAndValidateStaticIPv4Config(
&IPv4StaticConfig{
Address: null.StringFrom("192.168.1.100"),
Netmask: null.StringFrom("123.45.67.89"),
Gateway: null.StringFrom("192.168.1.1"),
},
)
assert.Error(t, err, "expected error, got nil")
}
func TestValidateInvalidIpv4Address(t *testing.T) {
_, err := parseAndValidateStaticIPv4Config(
&IPv4StaticConfig{
Address: null.StringFrom("192.168.1.666"),
Netmask: null.StringFrom("255.255.255.0"),
Gateway: null.StringFrom("192.168.1.1"),
},
)
assert.Error(t, err, "expected error, got nil")
}
func TestValidateIpv4GatewaySameAsAddress(t *testing.T) {
_, err := parseAndValidateStaticIPv4Config(
&IPv4StaticConfig{
Address: null.StringFrom("192.168.1.1"),
Netmask: null.StringFrom("255.255.255.0"),
Gateway: null.StringFrom("192.168.1.1"),
},
)
assert.Error(t, err, "expected error, got nil")
}
func TestValidateIpv4GatewayNotInNetmask(t *testing.T) {
_, err := parseAndValidateStaticIPv4Config(
&IPv4StaticConfig{
Address: null.StringFrom("192.168.1.100"),
Netmask: null.StringFrom("255.255.255.0"),
Gateway: null.StringFrom("192.168.2.1"),
},
)
assert.Error(t, err, "expected error, got nil")
}
func TestValidateIpv4GatewayNotGlobalUnicast(t *testing.T) {
_, err := parseAndValidateStaticIPv4Config(
&IPv4StaticConfig{
Address: null.StringFrom("127.0.0.1"),
Netmask: null.StringFrom("255.255.255.0"),
Gateway: null.StringFrom("127.0.0.1"),
},
)
assert.Error(t, err, "expected error, got nil")
}
func TestValidateIpv4GatewayPointToPoint(t *testing.T) {
_, err := parseAndValidateStaticIPv4Config(
&IPv4StaticConfig{
Address: null.StringFrom("192.168.1.100"),
Netmask: null.StringFrom("255.255.255.255"),
Gateway: null.StringFrom("203.0.113.1"),
},
)
assert.NoError(t, err, "expected no error, got %v", err)
}
func TestValidateIpv4Config(t *testing.T) {
_, err := parseAndValidateStaticIPv4Config(
&IPv4StaticConfig{
Address: null.StringFrom("192.168.1.100"),
Netmask: null.StringFrom("255.255.255.0"),
Gateway: null.StringFrom("192.168.1.1"),
},
)
assert.NoError(t, err, "expected no error, got %v", err)
}
func TestValidateIpv6LinkLocalAddress(t *testing.T) {
_, err := parseAndValidateStaticIPv6Config(
&IPv6StaticConfig{
Address: null.StringFrom("fe80::114"),
PrefixLength: null.IntFrom(64),
Gateway: null.StringFrom("fe80::1"),
},
)
assert.Error(t, err, "expected error, got nil")
}
func TestValidateIpv6GatewaySameAsAddress(t *testing.T) {
_, err := parseAndValidateStaticIPv6Config(
&IPv6StaticConfig{
Address: null.StringFrom("2001:0db8::2"),
PrefixLength: null.IntFrom(64),
Gateway: null.StringFrom("2001:0db8::2"),
},
)
assert.Error(t, err, "expected error, got nil")
}
func TestValidateIpv6GatewayNotInPrefix(t *testing.T) {
_, err := parseAndValidateStaticIPv6Config(
&IPv6StaticConfig{
Address: null.StringFrom("2001:0db8::2"),
PrefixLength: null.IntFrom(64),
Gateway: null.StringFrom("2001:0db8:1::1"),
},
)
assert.Error(t, err, "expected error, got nil")
}
func TestValidateIpv6AddressInvalidPrefixLength(t *testing.T) {
_, err := parseAndValidateStaticIPv6Config(
&IPv6StaticConfig{
Address: null.StringFrom("2001:0db8::2"),
PrefixLength: null.IntFrom(1919),
Gateway: null.StringFrom("2001:0db8::1"),
},
)
assert.Error(t, err, "expected error, got nil")
}
func TestValidateIpv6GatewayLinkLocal(t *testing.T) {
_, err := parseAndValidateStaticIPv6Config(
&IPv6StaticConfig{
Address: null.StringFrom("2001:0db8::2"),
PrefixLength: null.IntFrom(64),
Gateway: null.StringFrom("fe80::1"),
},
)
assert.NoError(t, err, "expected no error, got %v", err)
}
func TestValidateIpv6Config(t *testing.T) {
_, err := parseAndValidateStaticIPv6Config(
&IPv6StaticConfig{
Address: null.StringFrom("2001:0db8::2"),
PrefixLength: null.IntFrom(64),
Gateway: null.StringFrom("2001:0db8::1"),
},
)
assert.NoError(t, err, "expected no error, got %v", err)
}