@@ -18,9 +18,9 @@ func TestExpandIPPoolAddresses(t *testing.T) {
1818 })
1919 require .NoError (t , err )
2020 require .Equal (t , []string {
21- "10.0.0.1" ,
21+ "10.0.0.1/32 " ,
2222 "192.168.1.0/24" ,
23- "2001:db8::1" ,
23+ "2001:db8::1/128 " ,
2424 }, addresses )
2525}
2626
@@ -70,7 +70,8 @@ func TestExpandIPPoolAddressesEdgeCases(t *testing.T) {
7070 "10.0.0.1" ,
7171 })
7272 require .NoError (t , err )
73- require .Equal (t , []string {"10.0.0.1/32" }, addresses )
73+ require .Len (t , addresses , 1 )
74+ require .Equal (t , "10.0.0.1/32" , addresses [0 ])
7475 })
7576
7677 t .Run ("CIDR normalization" , func (t * testing.T ) {
@@ -364,6 +365,74 @@ func TestExpandIPPoolAddressesForOVNIntegration(t *testing.T) {
364365 require .Error (t , err )
365366 require .Contains (t , err .Error (), "mixed IPv4 and IPv6" )
366367 })
368+
369+ t .Run ("Range expansion with simplification" , func (t * testing.T ) {
370+ // Range that expands to /32 should be simplified
371+ addresses , err := util .ExpandIPPoolAddressesForOVN ([]string {
372+ "10.0.0.1..10.0.0.1" , // Single IP range
373+ })
374+ require .NoError (t , err )
375+ require .Len (t , addresses , 1 )
376+ require .Equal (t , "10.0.0.1" , addresses [0 ])
377+ require .NotContains (t , addresses [0 ], "/32" )
378+ })
379+
380+ t .Run ("Range with multiple CIDRs - some simplified" , func (t * testing.T ) {
381+ addresses , err := util .ExpandIPPoolAddressesForOVN ([]string {
382+ "10.0.0.1..10.0.0.5" ,
383+ })
384+ require .NoError (t , err )
385+ require .NotEmpty (t , addresses )
386+ // Should contain simplified /32 and non-simplified /31
387+ require .Contains (t , addresses , "10.0.0.1" ) // Simplified from /32
388+ require .Contains (t , addresses , "10.0.0.2/31" ) // Not /32, keep as-is
389+ require .Contains (t , addresses , "10.0.0.4/31" ) // Not /32, keep as-is
390+ })
391+
392+ t .Run ("Empty input" , func (t * testing.T ) {
393+ addresses , err := util .ExpandIPPoolAddressesForOVN ([]string {})
394+ require .NoError (t , err )
395+ require .Empty (t , addresses )
396+ })
397+
398+ t .Run ("Only whitespace entries" , func (t * testing.T ) {
399+ addresses , err := util .ExpandIPPoolAddressesForOVN ([]string {"" , " " , "\t " })
400+ require .NoError (t , err )
401+ require .Empty (t , addresses )
402+ })
403+
404+ t .Run ("IPv6 single IP simplified" , func (t * testing.T ) {
405+ addresses , err := util .ExpandIPPoolAddressesForOVN ([]string {"2001:db8::1" })
406+ require .NoError (t , err )
407+ require .Len (t , addresses , 1 )
408+ require .Equal (t , "2001:db8::1" , addresses [0 ])
409+ require .NotContains (t , addresses [0 ], "/128" )
410+ })
411+
412+ t .Run ("IPv6 range with /128 simplified" , func (t * testing.T ) {
413+ addresses , err := util .ExpandIPPoolAddressesForOVN ([]string {"fd00::1..fd00::1" })
414+ require .NoError (t , err )
415+ require .Len (t , addresses , 1 )
416+ require .Equal (t , "fd00::1" , addresses [0 ])
417+ })
418+
419+ t .Run ("Duplicate IPs deduplicated and simplified" , func (t * testing.T ) {
420+ addresses , err := util .ExpandIPPoolAddressesForOVN ([]string {
421+ "10.0.0.1" ,
422+ "10.0.0.1" ,
423+ " 10.0.0.1 " ,
424+ })
425+ require .NoError (t , err )
426+ require .Len (t , addresses , 1 )
427+ require .Equal (t , "10.0.0.1" , addresses [0 ])
428+ })
429+
430+ t .Run ("CIDR normalization preserved" , func (t * testing.T ) {
431+ addresses , err := util .ExpandIPPoolAddressesForOVN ([]string {"192.168.1.5/24" })
432+ require .NoError (t , err )
433+ require .Len (t , addresses , 1 )
434+ require .Equal (t , "192.168.1.0/24" , addresses [0 ])
435+ })
367436}
368437
369438func TestExpandIPPoolAddressesGeneralUse (t * testing.T ) {
0 commit comments