summaryrefslogtreecommitdiffhomepage
path: root/dhcpv4/options_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'dhcpv4/options_test.go')
-rw-r--r--dhcpv4/options_test.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/dhcpv4/options_test.go b/dhcpv4/options_test.go
index 7ee0ebe..7f4b5f8 100644
--- a/dhcpv4/options_test.go
+++ b/dhcpv4/options_test.go
@@ -7,6 +7,7 @@ import (
)
func TestParseOption(t *testing.T) {
+ // Generic
option := []byte{5, 4, 192, 168, 1, 254} // DNS option
opt, err := ParseOption(option)
require.NoError(t, err)
@@ -15,6 +16,54 @@ func TestParseOption(t *testing.T) {
require.Equal(t, []byte{192, 168, 1, 254}, generic.Data)
require.Equal(t, 4, generic.Length())
require.Equal(t, "Name Server -> [192 168 1 254]", generic.String())
+
+ // Message type
+ option = []byte{53, 1, 1}
+ opt, err = ParseOption(option)
+ require.NoError(t, err)
+ require.Equal(t, OptionDHCPMessageType, opt.Code(), "Code")
+ require.Equal(t, 1, opt.Length(), "Length")
+ require.Equal(t, option, opt.ToBytes(), "ToBytes")
+
+ // Parameter request list
+ option = []byte{55, 3, 5, 53, 61}
+ opt, err = ParseOption(option)
+ require.NoError(t, err)
+ require.Equal(t, OptionParameterRequestList, opt.Code(), "Code")
+ require.Equal(t, 3, opt.Length(), "Length")
+ require.Equal(t, option, opt.ToBytes(), "ToBytes")
+
+ // Requested IP address
+ option = []byte{50, 4, 1, 2, 3, 4}
+ opt, err = ParseOption(option)
+ require.NoError(t, err)
+ require.Equal(t, OptionRequestedIPAddress, opt.Code(), "Code")
+ require.Equal(t, 4, opt.Length(), "Length")
+ require.Equal(t, option, opt.ToBytes(), "ToBytes")
+
+ // Option server ID
+ option = []byte{54, 4, 1, 2, 3, 4}
+ opt, err = ParseOption(option)
+ require.NoError(t, err)
+ require.Equal(t, OptionServerIdentifier, opt.Code(), "Code")
+ require.Equal(t, 4, opt.Length(), "Length")
+ require.Equal(t, option, opt.ToBytes(), "ToBytes")
+
+ // Option max message size
+ option = []byte{57, 2, 1, 2}
+ opt, err = ParseOption(option)
+ require.NoError(t, err)
+ require.Equal(t, OptionMaximumDHCPMessageSize, opt.Code(), "Code")
+ require.Equal(t, 2, opt.Length(), "Length")
+ require.Equal(t, option, opt.ToBytes(), "ToBytes")
+
+ // Option class identifier
+ option = []byte{60, 4, 't', 'e', 's', 't'}
+ opt, err = ParseOption(option)
+ require.NoError(t, err)
+ require.Equal(t, OptionClassIdentifier, opt.Code(), "Code")
+ require.Equal(t, 4, opt.Length(), "Length")
+ require.Equal(t, option, opt.ToBytes(), "ToBytes")
}
func TestParseOptionZeroLength(t *testing.T) {