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) } } }