add all files from Hong
This commit is contained in:
96
plugins/searchdomains/plugin_test.go
Normal file
96
plugins/searchdomains/plugin_test.go
Normal file
@@ -0,0 +1,96 @@
|
||||
// Copyright 2018-present the CoreDHCP Authors. All rights reserved
|
||||
// This source code is licensed under the MIT license found in the
|
||||
// LICENSE file in the root directory of this source tree.
|
||||
|
||||
package searchdomains
|
||||
|
||||
import (
|
||||
"net"
|
||||
"testing"
|
||||
|
||||
"github.com/insomniacslk/dhcp/dhcpv4"
|
||||
"github.com/insomniacslk/dhcp/dhcpv6"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestAddDomains6(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
// Search domains we will expect the DHCP server to assign
|
||||
searchDomains := []string{"domain.a", "domain.b"}
|
||||
|
||||
// Init plugin
|
||||
handler6, err := Plugin.Setup6(searchDomains...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Fake request
|
||||
req, err := dhcpv6.NewMessage()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
req.MessageType = dhcpv6.MessageTypeRequest
|
||||
req.AddOption(dhcpv6.OptRequestedOption(dhcpv6.OptionDNSRecursiveNameServer))
|
||||
|
||||
// Fake response input
|
||||
stub, err := dhcpv6.NewMessage()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
stub.MessageType = dhcpv6.MessageTypeReply
|
||||
|
||||
// Call plugin
|
||||
resp, stop := handler6(req, stub)
|
||||
if resp == nil {
|
||||
t.Fatal("plugin did not return a message")
|
||||
}
|
||||
if stop {
|
||||
t.Error("plugin interrupted processing")
|
||||
}
|
||||
|
||||
searchLabels := resp.(*dhcpv6.Message).Options.DomainSearchList().Labels
|
||||
assert.Equal(searchDomains, searchLabels)
|
||||
}
|
||||
|
||||
func TestAddDomains4(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
// Search domains we will expect the DHCP server to assign
|
||||
// NOTE: these domains should be different from the v6 test domains;
|
||||
// this tests that we haven't accidentally set the v6 domains in the
|
||||
// v4 plugin handler or vice versa.
|
||||
searchDomains := []string{"domain.b", "domain.c"}
|
||||
|
||||
// Init plugin
|
||||
handler4, err := Plugin.Setup4(searchDomains...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Fake request
|
||||
req, err := dhcpv4.NewDiscovery(net.HardwareAddr{0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Fake response input
|
||||
stub, err := dhcpv4.NewReplyFromRequest(req)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Call plugin
|
||||
resp, stop := handler4(req, stub)
|
||||
if resp == nil {
|
||||
t.Fatal("plugin did not return a message")
|
||||
}
|
||||
if stop {
|
||||
t.Error("plugin interrupted processing")
|
||||
}
|
||||
|
||||
searchLabels := resp.DomainSearch().Labels
|
||||
assert.Equal(searchDomains, searchLabels)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user