keksvpn/pkg/ipfunc/ipfunc_test.go

42 lines
1018 B
Go

package ipfunc
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestNewIPSubnet(t *testing.T) {
ipnet, err := NewIPSubnet("10.0.0.0/24")
assert.Nil(t, err, "Should be able to create IPSubnet")
assert.Equal(t, 254, len(ipnet.freeIPs))
}
func TestRemoveIPFromSubnet(t *testing.T) {
ipnet, err := NewIPSubnet("10.0.0.0/24")
assert.Nil(t, err, "Should be able to create IPSubnet")
ipnet.Remove("10.0.0.43")
assert.Equal(t, 253, len(ipnet.freeIPs))
ipnet.Remove("10.0.0.47")
assert.Equal(t, 252, len(ipnet.freeIPs))
}
func TestGetNextFreeIP(t *testing.T) {
ipnet, err := NewIPSubnet("10.0.0.0/28")
assert.Nil(t, err, "Should be able to create IPSubnet")
ip, err := ipnet.GetNextFreeIP()
assert.Nil(t, err, "schould not return an error")
assert.Equalf(t, "10.0.0.1", ip, "should return next ip")
ip, err = ipnet.GetNextFreeIP()
assert.Nil(t, err, "schould not return an error")
assert.Equalf(t, "10.0.0.2", ip, "should return next ip")
assert.Equal(t, 12, len(ipnet.freeIPs))
}