summaryrefslogtreecommitdiffhomepage
path: root/dhcpv4/option_string_test.go
diff options
context:
space:
mode:
authorChristopher Koch <c@chrisko.ch>2019-01-15 20:55:06 +0000
committerChris K <c@chrisko.ch>2019-01-19 14:44:00 -0800
commitfeb8958aff848a6d7363fea2e29a2ac071685055 (patch)
tree768aee371b4b7a1af1aba5691e97b7970d5c560d /dhcpv4/option_string_test.go
parentfe6f307df5d78a54ddd4a56a275043317148fe5a (diff)
dhcpv4: consolidate string options into one file.
Diffstat (limited to 'dhcpv4/option_string_test.go')
-rw-r--r--dhcpv4/option_string_test.go102
1 files changed, 102 insertions, 0 deletions
diff --git a/dhcpv4/option_string_test.go b/dhcpv4/option_string_test.go
new file mode 100644
index 0000000..0704f31
--- /dev/null
+++ b/dhcpv4/option_string_test.go
@@ -0,0 +1,102 @@
+package dhcpv4
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestOptDomainName(t *testing.T) {
+ o := OptDomainName{DomainName: "foo"}
+ require.Equal(t, OptionDomainName, o.Code(), "Code")
+ require.Equal(t, []byte{'f', 'o', 'o'}, o.ToBytes(), "ToBytes")
+ require.Equal(t, "Domain Name -> foo", o.String())
+}
+
+func TestParseOptDomainName(t *testing.T) {
+ data := []byte{'t', 'e', 's', 't'}
+ o, err := ParseOptDomainName(data)
+ require.NoError(t, err)
+ require.Equal(t, &OptDomainName{DomainName: "test"}, o)
+}
+
+func TestOptHostName(t *testing.T) {
+ o := OptHostName{HostName: "foo"}
+ require.Equal(t, OptionHostName, o.Code(), "Code")
+ require.Equal(t, []byte{'f', 'o', 'o'}, o.ToBytes(), "ToBytes")
+ require.Equal(t, "Host Name -> foo", o.String())
+}
+
+func TestParseOptHostName(t *testing.T) {
+ data := []byte{'t', 'e', 's', 't'}
+ o, err := ParseOptHostName(data)
+ require.NoError(t, err)
+ require.Equal(t, &OptHostName{HostName: "test"}, o)
+}
+
+func TestOptRootPath(t *testing.T) {
+ o := OptRootPath{Path: "/foo/bar/baz"}
+ require.Equal(t, OptionRootPath, o.Code(), "Code")
+ wantBytes := []byte{
+ '/', 'f', 'o', 'o', '/', 'b', 'a', 'r', '/', 'b', 'a', 'z',
+ }
+ require.Equal(t, wantBytes, o.ToBytes(), "ToBytes")
+ require.Equal(t, "Root Path -> /foo/bar/baz", o.String())
+}
+
+func TestParseOptRootPath(t *testing.T) {
+ data := []byte{byte(OptionRootPath), 4, '/', 'f', 'o', 'o'}
+ o, err := ParseOptRootPath(data[2:])
+ require.NoError(t, err)
+ require.Equal(t, &OptRootPath{Path: "/foo"}, o)
+}
+
+func TestOptBootfileName(t *testing.T) {
+ opt := OptBootfileName{
+ BootfileName: "linuxboot",
+ }
+ require.Equal(t, OptionBootfileName, opt.Code())
+ require.Equal(t, []byte{'l', 'i', 'n', 'u', 'x', 'b', 'o', 'o', 't'}, opt.ToBytes())
+ require.Equal(t, "Bootfile Name -> linuxboot", opt.String())
+}
+
+func TestParseOptBootfileName(t *testing.T) {
+ expected := []byte{
+ 'l', 'i', 'n', 'u', 'x', 'b', 'o', 'o', 't',
+ }
+ opt, err := ParseOptBootfileName(expected)
+ require.NoError(t, err)
+ require.Equal(t, "linuxboot", opt.BootfileName)
+}
+
+func TestOptTFTPServer(t *testing.T) {
+ opt := OptTFTPServerName{
+ TFTPServerName: "linuxboot",
+ }
+ require.Equal(t, OptionTFTPServerName, opt.Code())
+ require.Equal(t, []byte("linuxboot"), opt.ToBytes())
+ require.Equal(t, "TFTP Server Name -> linuxboot", opt.String())
+}
+
+func TestParseOptTFTPServerName(t *testing.T) {
+ expected := []byte{
+ 'l', 'i', 'n', 'u', 'x', 'b', 'o', 'o', 't',
+ }
+ opt, err := ParseOptTFTPServerName(expected)
+ require.NoError(t, err)
+ require.Equal(t, "linuxboot", string(opt.TFTPServerName))
+}
+
+func TestOptClassIdentifier(t *testing.T) {
+ o := OptClassIdentifier{Identifier: "foo"}
+ require.Equal(t, OptionClassIdentifier, o.Code(), "Code")
+ require.Equal(t, []byte("foo"), o.ToBytes(), "ToBytes")
+ require.Equal(t, "Class Identifier -> foo", o.String())
+}
+
+func TestParseOptClassIdentifier(t *testing.T) {
+ data := []byte("test")
+ o, err := ParseOptClassIdentifier(data)
+ require.NoError(t, err)
+ require.Equal(t, &OptClassIdentifier{Identifier: "test"}, o)
+}