diff options
Diffstat (limited to 'dhcpv4/option_ips_test.go')
-rw-r--r-- | dhcpv4/option_ips_test.go | 145 |
1 files changed, 45 insertions, 100 deletions
diff --git a/dhcpv4/option_ips_test.go b/dhcpv4/option_ips_test.go index 5efd537..1e1b772 100644 --- a/dhcpv4/option_ips_test.go +++ b/dhcpv4/option_ips_test.go @@ -7,132 +7,77 @@ import ( "github.com/stretchr/testify/require" ) -func TestOptRoutersInterfaceMethods(t *testing.T) { - routers := []net.IP{ - net.IPv4(192, 168, 0, 10), - net.IPv4(192, 168, 0, 20), - } - o := OptRouter{Routers: routers} - require.Equal(t, OptionRouter, o.Code(), "Code") - require.Equal(t, routers, o.Routers, "Routers") -} - -func TestParseOptRouter(t *testing.T) { - data := []byte{ - byte(OptionRouter), - 8, // Length - 192, 168, 0, 10, // Router #1 - 192, 168, 0, 20, // Router #2 - } - o, err := ParseOptRouter(data[2:]) - require.NoError(t, err) - routers := []net.IP{ - net.IP{192, 168, 0, 10}, - net.IP{192, 168, 0, 20}, - } - require.Equal(t, &OptRouter{Routers: routers}, o) - - // Short byte stream - data = []byte{byte(OptionRouter)} - _, err = ParseOptRouter(data) - require.Error(t, err, "should get error from short byte stream") -} - -func TestParseOptRouterNoRouters(t *testing.T) { - // RFC2132 requires that at least one Router IP is specified - data := []byte{ - byte(OptionRouter), - 0, // Length - } - _, err := ParseOptRouter(data) - require.Error(t, err) -} - -func TestOptRouterString(t *testing.T) { - o := OptRouter{Routers: []net.IP{net.IP{192, 168, 0, 1}, net.IP{192, 168, 0, 10}}} - require.Equal(t, "Routers -> 192.168.0.1, 192.168.0.10", o.String()) -} - -func TestOptDomainNameServerInterfaceMethods(t *testing.T) { - servers := []net.IP{ - net.IPv4(192, 168, 0, 10), - net.IPv4(192, 168, 0, 20), - } - o := OptDomainNameServer{NameServers: servers} - require.Equal(t, OptionDomainNameServer, o.Code(), "Code") - require.Equal(t, servers, o.NameServers, "NameServers") -} - -func TestParseOptDomainNameServer(t *testing.T) { +func TestParseIPs(t *testing.T) { + var i IPs data := []byte{ - byte(OptionDomainNameServer), - 8, // Length 192, 168, 0, 10, // DNS #1 192, 168, 0, 20, // DNS #2 } - o, err := ParseOptDomainNameServer(data[2:]) + err := i.FromBytes(data) require.NoError(t, err) servers := []net.IP{ net.IP{192, 168, 0, 10}, net.IP{192, 168, 0, 20}, } - require.Equal(t, &OptDomainNameServer{NameServers: servers}, o) + require.Equal(t, servers, []net.IP(i)) // Bad length data = []byte{1, 1, 1} - _, err = ParseOptDomainNameServer(data) + err = i.FromBytes(data) require.Error(t, err, "should get error from bad length") -} -func TestParseOptDomainNameServerNoServers(t *testing.T) { - // RFC2132 requires that at least one DNS server IP is specified - _, err := ParseOptDomainNameServer([]byte{}) + // RFC2132 requires that at least one IP is specified for each IP field. + err = i.FromBytes([]byte{}) require.Error(t, err) } -func TestOptDomainNameServerString(t *testing.T) { - o := OptDomainNameServer{NameServers: []net.IP{net.IPv4(192, 168, 0, 1), net.IPv4(192, 168, 0, 10)}} - require.Equal(t, "Domain Name Servers -> 192.168.0.1, 192.168.0.10", o.String()) +func TestOptDomainNameServer(t *testing.T) { + o := OptDNS(net.IPv4(192, 168, 0, 1), net.IPv4(192, 168, 0, 10)) + require.Equal(t, OptionDomainNameServer, o.Code) + require.Equal(t, []byte{192, 168, 0, 1, 192, 168, 0, 10}, o.Value.ToBytes()) + require.Equal(t, "Domain Name Server: 192.168.0.1, 192.168.0.10", o.String()) } -func TestOptNTPServersInterfaceMethods(t *testing.T) { - ntpServers := []net.IP{ - net.IPv4(192, 168, 0, 10), - net.IPv4(192, 168, 0, 20), +func TestGetDomainNameServer(t *testing.T) { + ips := []net.IP{ + net.IP{192, 168, 0, 1}, + net.IP{192, 168, 0, 10}, } - o := OptNTPServers{NTPServers: ntpServers} - require.Equal(t, OptionNTPServers, o.Code(), "Code") - require.Equal(t, ntpServers, o.NTPServers, "NTPServers") + o := OptionsFromList(OptDNS(ips...)) + require.Equal(t, ips, GetDNS(o)) + require.Nil(t, GetDNS(Options{})) } -func TestParseOptNTPServers(t *testing.T) { - data := []byte{ - byte(OptionNTPServers), - 8, // Length - 192, 168, 0, 10, // NTP server #1 - 192, 168, 0, 20, // NTP server #2 - } - o, err := ParseOptNTPServers(data[2:]) - require.NoError(t, err) - ntpServers := []net.IP{ +func TestOptNTPServers(t *testing.T) { + o := OptNTPServers(net.IPv4(192, 168, 0, 1), net.IPv4(192, 168, 0, 10)) + require.Equal(t, OptionNTPServers, o.Code) + require.Equal(t, []byte{192, 168, 0, 1, 192, 168, 0, 10}, o.Value.ToBytes()) + require.Equal(t, "NTP Servers: 192.168.0.1, 192.168.0.10", o.String()) +} + +func TestGetNTPServers(t *testing.T) { + ips := []net.IP{ + net.IP{192, 168, 0, 1}, net.IP{192, 168, 0, 10}, - net.IP{192, 168, 0, 20}, } - require.Equal(t, &OptNTPServers{NTPServers: ntpServers}, o) - - // Bad length - data = []byte{1, 1, 1} - _, err = ParseOptNTPServers(data) - require.Error(t, err, "should get error from bad length") + o := OptionsFromList(OptNTPServers(ips...)) + require.Equal(t, ips, GetNTPServers(o)) + require.Nil(t, GetNTPServers(Options{})) } -func TestParseOptNTPserversNoNTPServers(t *testing.T) { - // RFC2132 requires that at least one NTP server IP is specified - _, err := ParseOptNTPServers([]byte{}) - require.Error(t, err) +func TestOptRouter(t *testing.T) { + o := OptRouter(net.IPv4(192, 168, 0, 1), net.IPv4(192, 168, 0, 10)) + require.Equal(t, OptionRouter, o.Code) + require.Equal(t, []byte{192, 168, 0, 1, 192, 168, 0, 10}, o.Value.ToBytes()) + require.Equal(t, "Router: 192.168.0.1, 192.168.0.10", o.String()) } -func TestOptNTPServersString(t *testing.T) { - o := OptNTPServers{NTPServers: []net.IP{net.IPv4(192, 168, 0, 1), net.IPv4(192, 168, 0, 10)}} - require.Equal(t, "NTP Servers -> 192.168.0.1, 192.168.0.10", o.String()) +func TestGetRouter(t *testing.T) { + ips := []net.IP{ + net.IP{192, 168, 0, 1}, + net.IP{192, 168, 0, 10}, + } + o := OptionsFromList(OptRouter(ips...)) + require.Equal(t, ips, GetRouter(o)) + require.Nil(t, GetRouter(Options{})) } |