summaryrefslogtreecommitdiffhomepage
path: root/dhcpv4/option_ips_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'dhcpv4/option_ips_test.go')
-rw-r--r--dhcpv4/option_ips_test.go145
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{}))
}