|
|
@@ -0,0 +1,65 @@
|
|
|
+// Copyright 2018-present the CoreDHCP Authors. All rights reserved
|
|
|
+// This source code is licensed under the MIT license found in the
|
|
|
+// LICENSE file in the root directory of this source tree.
|
|
|
+
|
|
|
+package netmask
|
|
|
+
|
|
|
+import (
|
|
|
+ "net"
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ "github.com/insomniacslk/dhcp/dhcpv4"
|
|
|
+ "github.com/stretchr/testify/assert"
|
|
|
+)
|
|
|
+
|
|
|
+func TestCheckValidNetmask(t *testing.T) {
|
|
|
+ assert.True(t, checkValidNetmask(net.IPv4Mask(255, 255, 255, 0)))
|
|
|
+ assert.True(t, checkValidNetmask(net.IPv4Mask(255, 255, 0, 0)))
|
|
|
+ assert.True(t, checkValidNetmask(net.IPv4Mask(255, 0, 0, 0)))
|
|
|
+ assert.True(t, checkValidNetmask(net.IPv4Mask(0, 0, 0, 0)))
|
|
|
+
|
|
|
+ assert.False(t, checkValidNetmask(net.IPv4Mask(0, 255, 255, 255)))
|
|
|
+ assert.False(t, checkValidNetmask(net.IPv4Mask(0, 0, 255, 255)))
|
|
|
+ assert.False(t, checkValidNetmask(net.IPv4Mask(0, 0, 0, 255)))
|
|
|
+}
|
|
|
+
|
|
|
+func TestHandler4(t *testing.T) {
|
|
|
+ // set plugin netmask
|
|
|
+ netmask = net.IPv4Mask(255, 255, 255, 0)
|
|
|
+
|
|
|
+ // prepare DHCPv4 request
|
|
|
+ req := &dhcpv4.DHCPv4{}
|
|
|
+ resp := &dhcpv4.DHCPv4{
|
|
|
+ Options: dhcpv4.Options{},
|
|
|
+ }
|
|
|
+
|
|
|
+ // if we handle this DHCP request, the netmask should be one of the options
|
|
|
+ // of the result
|
|
|
+ result, stop := Handler4(req, resp)
|
|
|
+ assert.Same(t, result, resp)
|
|
|
+ assert.False(t, stop)
|
|
|
+ assert.EqualValues(t, netmask, resp.Options.Get(dhcpv4.OptionSubnetMask))
|
|
|
+}
|
|
|
+
|
|
|
+func TestSetup4(t *testing.T) {
|
|
|
+ // valid configuration
|
|
|
+ _, err := setup4("255.255.255.0")
|
|
|
+ assert.NoError(t, err)
|
|
|
+ assert.EqualValues(t, netmask, net.IPv4Mask(255, 255, 255, 0))
|
|
|
+
|
|
|
+ // no configuration
|
|
|
+ _, err = setup4()
|
|
|
+ assert.Error(t, err)
|
|
|
+
|
|
|
+ // unspecified netmask
|
|
|
+ _, err = setup4("0.0.0.0")
|
|
|
+ assert.Error(t, err)
|
|
|
+
|
|
|
+ // ipv6 prefix
|
|
|
+ _, err = setup4("ff02::/64")
|
|
|
+ assert.Error(t, err)
|
|
|
+
|
|
|
+ // invalid netmask
|
|
|
+ _, err = setup4("0.0.0.255")
|
|
|
+ assert.Error(t, err)
|
|
|
+}
|