package ipfailover
import (
"testing"
)
func TestValidateIPAddress(t *testing.T) {
validIPs := []string{"1.1.1.1", "1.1.1.255", "255.255.255.255",
"8.8.8.8", "0.1.2.3", "255.254.253.252",
}
for _, ip := range validIPs {
if err := ValidateIPAddress(ip); err != nil {
t.Errorf("Test valid ip=%q got error %s expected: no error.", ip, err)
}
}
invalidIPs := []string{"1.1.1.256", "256.256.256.256",
"1024.512.256.128", "a.b.c.d", "1.2.3.4.abc", "5.6.7.8def",
"a.12.13.14", "9999.888.77.6", "1.2.3",
}
for _, ip := range invalidIPs {
if err := ValidateIPAddress(ip); err == nil {
t.Errorf("Test invalid ip=%q got no error expected: error.", ip)
}
}
}
func TestValidateIPAddressRange(t *testing.T) {
validRanges := []string{"1.1.1.1-1", "1.1.1.1-7", "1.1.1.250-255",
"255.255.255.255-255", "8.8.8.4-8", "0.1.2.3-255",
"255.254.253.252-255", "1.1.1.1", " 1.1.1.1-2 ",
}
for _, iprange := range validRanges {
if err := ValidateIPAddressRange(iprange); err != nil {
t.Errorf("Test valid iprange=%q got error %s expected: no error.", iprange, err)
}
}
invalidRanges := []string{"1.1.1.256-250", "1.1.1.1-0",
"1.1.1.5-1", "255.255.255.255-259", "1024.512.256.128-255",
"a.b.c.d-e", "1.2.3.4.abc-def", "5.6.7.8def-1.2.3.4abc",
"a.12.13.14-55", "9999.888.77.6-66", "1.2.3.4-5-6", "1.2.3-4",
"1,2.3.4.5-6", "-", "1.1.1. 1-2",
}
for _, iprange := range invalidRanges {
if err := ValidateIPAddressRange(iprange); err == nil {
t.Errorf("Test invalid iprange=%q got no error expected: error.", iprange)
}
}
}
func TestValidateVirtualIPs(t *testing.T) {
validVIPs := []string{"", "1.1.1.1-1,2.2.2.2", "4.4.4.4-8",
"1.1.1.1-7,2.2.2.2,3.3.3.3-5",
"1.1.1.250-255,255.255.255.255-255", "4.4.4.4-8,8.8.8.4-8",
"0.1.2.3-255,4.5.6.7,8.9.10.11,12.13.14.15-20",
"255.254.253.252-255,1.1.1.1",
}
for _, vips := range validVIPs {
if err := ValidateVirtualIPs(vips); err != nil {
t.Errorf("Test valid vips=%q got error %s expected: no error.",
vips, err)
}
}
invalidVIPs := []string{"1.1.1.256-250,2.2.2.2", "1.1.1.1,2.2.2.2-0",
"1.1.1.1-5,2.2.2.2,3.3.3.3-1", "255.255.255.255-259",
"1.2.3.4-5,1024.512.256.128-255", "1.1.1.1,a.b.c.d-e",
"a.b.c.d-e,5.4.3.2", "1.2.3.4.abc-def",
"5.6.7.8def-1.2.3.4abc", "4.1.1.1,a.12.13.14-55",
"8.8.8.8,9999.888.77.6-66,4.4.4.4-8", "1.2.3.4-5-6", "1.2.3-4",
}
for _, vips := range invalidVIPs {
if err := ValidateVirtualIPs(vips); err == nil {
t.Errorf("Test invalid vips=%q got no error expected: error.", vips)
}
}
}
func TestValidateCmdOptionsVIPs(t *testing.T) {
validVIPs := []string{"", "1.1.1.1-1,2.2.2.2", "4.4.4.4-8",
"1.1.1.1-7,2.2.2.2,3.3.3.3-5",
"1.1.1.250-255,255.255.255.255-255", "4.4.4.4-8,8.8.8.4-8",
"0.1.2.3-255,4.5.6.7,8.9.10.11,12.13.14.15-20",
"255.254.253.252-255,1.1.1.1",
}
for _, vips := range validVIPs {
options := &IPFailoverConfigCmdOptions{VirtualIPs: vips}
if err := ValidateCmdOptions(options); err != nil {
t.Errorf("Test command options valid vips=%q got error %s expected: no error.",
vips, err)
}
}
invalidVIPs := []string{"1.1.1.256-250,2.2.2.2", "1.1.1.1,2.2.2.2-0",
"1.1.1.1-5,2.2.2.2,3.3.3.3-1", "255.255.255.255-259",
"1.2.3.4-5,1024.512.256.128-255", "1.1.1.1,a.b.c.d-e",
"a.b.c.d-e,5.4.3.2", "1.2.3.4.abc-def",
"5.6.7.8def-1.2.3.4abc", "4.1.1.1,a.12.13.14-55",
"8.8.8.8,9999.888.77.6-66,4.4.4.4-8", "1.2.3.4-5-6", "1.2.3-4",
}
for _, vips := range invalidVIPs {
options := &IPFailoverConfigCmdOptions{VirtualIPs: vips}
if err := ValidateCmdOptions(options); err == nil {
t.Errorf("Test command options invalid vips=%q got no error expected: error.", vips)
}
}
}