coredns/plugin/pkg/variables/variables_test.go
Miek Gieben 2fd31cd3e0
plugin/metadata: some cleanups (#1906)
* plugin/metadata: some cleanups

Name to provider.go as that's what being defined right now in the file.
Use request.Request because that's done in variables.go anyway. Name the
main storage M, because there is no further meaning behind.

Remove superfluous methods

Signed-off-by: Miek Gieben <miek@miek.nl>

* Fix test

Signed-off-by: Miek Gieben <miek@miek.nl>
2018-06-29 15:03:25 +01:00

83 lines
1.4 KiB
Go

package variables
import (
"bytes"
"testing"
"github.com/coredns/coredns/plugin/test"
"github.com/coredns/coredns/request"
"github.com/miekg/dns"
)
func TestGetValue(t *testing.T) {
// test.ResponseWriter has the following values:
// The remote will always be 10.240.0.1 and port 40212.
// The local address is always 127.0.0.1 and port 53.
tests := []struct {
varName string
expectedValue []byte
shouldErr bool
}{
{
queryName,
[]byte("example.com."),
false,
},
{
queryType,
[]byte{0x00, 0x01},
false,
},
{
clientIP,
[]byte{10, 240, 0, 1},
false,
},
{
clientPort,
[]byte{0x9D, 0x14},
false,
},
{
protocol,
[]byte("udp"),
false,
},
{
serverIP,
[]byte{127, 0, 0, 1},
false,
},
{
serverPort,
[]byte{0, 53},
false,
},
{
"wrong_var",
[]byte{},
true,
},
}
for i, tc := range tests {
m := new(dns.Msg)
m.SetQuestion("example.com.", dns.TypeA)
m.Question[0].Qclass = dns.ClassINET
state := request.Request{W: &test.ResponseWriter{}, Req: m}
value, err := GetValue(state, tc.varName)
if tc.shouldErr && err == nil {
t.Errorf("Test %d: Expected error, but didn't recieve", i)
}
if !tc.shouldErr && err != nil {
t.Errorf("Test %d: Expected no error, but got error: %v", i, err.Error())
}
if !bytes.Equal(tc.expectedValue, value) {
t.Errorf("Test %d: Expected %v but got %v", i, tc.expectedValue, value)
}
}
}