plugin_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Copyright 2018-present the CoreDHCP Authors. All rights reserved
  2. // This source code is licensed under the MIT license found in the
  3. // LICENSE file in the root directory of this source tree.
  4. package netmask
  5. import (
  6. "net"
  7. "testing"
  8. "github.com/insomniacslk/dhcp/dhcpv4"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestCheckValidNetmask(t *testing.T) {
  12. assert.True(t, checkValidNetmask(net.IPv4Mask(255, 255, 255, 0)))
  13. assert.True(t, checkValidNetmask(net.IPv4Mask(255, 255, 0, 0)))
  14. assert.True(t, checkValidNetmask(net.IPv4Mask(255, 0, 0, 0)))
  15. assert.True(t, checkValidNetmask(net.IPv4Mask(0, 0, 0, 0)))
  16. assert.False(t, checkValidNetmask(net.IPv4Mask(0, 255, 255, 255)))
  17. assert.False(t, checkValidNetmask(net.IPv4Mask(0, 0, 255, 255)))
  18. assert.False(t, checkValidNetmask(net.IPv4Mask(0, 0, 0, 255)))
  19. }
  20. func TestHandler4(t *testing.T) {
  21. // set plugin netmask
  22. netmask = net.IPv4Mask(255, 255, 255, 0)
  23. // prepare DHCPv4 request
  24. req := &dhcpv4.DHCPv4{}
  25. resp := &dhcpv4.DHCPv4{
  26. Options: dhcpv4.Options{},
  27. }
  28. // if we handle this DHCP request, the netmask should be one of the options
  29. // of the result
  30. result, stop := Handler4(req, resp)
  31. assert.Same(t, result, resp)
  32. assert.False(t, stop)
  33. assert.EqualValues(t, netmask, resp.Options.Get(dhcpv4.OptionSubnetMask))
  34. }
  35. func TestSetup4(t *testing.T) {
  36. // valid configuration
  37. _, err := setup4("255.255.255.0")
  38. assert.NoError(t, err)
  39. assert.EqualValues(t, netmask, net.IPv4Mask(255, 255, 255, 0))
  40. // no configuration
  41. _, err = setup4()
  42. assert.Error(t, err)
  43. // unspecified netmask
  44. _, err = setup4("0.0.0.0")
  45. assert.Error(t, err)
  46. // ipv6 prefix
  47. _, err = setup4("ff02::/64")
  48. assert.Error(t, err)
  49. // invalid netmask
  50. _, err = setup4("0.0.0.255")
  51. assert.Error(t, err)
  52. }