add test case of remote ip (#3964)

Signed-off-by: zounengren <zounengren@cmss.chinamobile.com>
This commit is contained in:
Zou Nengren
2020-06-24 05:37:00 +08:00
committed by GitHub
parent ba8a567e38
commit 55a33aa9d2
2 changed files with 23 additions and 5 deletions

View File

@@ -12,6 +12,7 @@ import (
"github.com/miekg/dns"
)
const name = "whoami"
// Whoami is a plugin that returns your IP address, port and the protocol used for connecting
// to CoreDNS.
type Whoami struct{}
@@ -55,4 +56,4 @@ func (wh Whoami) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg)
}
// Name implements the Handler interface.
func (wh Whoami) Name() string { return "whoami" }
func (wh Whoami) Name() string { return name }

View File

@@ -12,10 +12,13 @@ import (
func TestWhoami(t *testing.T) {
wh := Whoami{}
if wh.Name() != name {
t.Errorf("expected plugin name: %s, got %s", wh.Name(), name)
}
tests := []struct {
qname string
qtype uint16
remote string
expectedCode int
expectedReply []string // ownernames for the records in the additional section.
expectedErr error
@@ -35,6 +38,22 @@ func TestWhoami(t *testing.T) {
expectedReply: []string{"Example.ORG.", "_udp.Example.ORG."},
expectedErr: nil,
},
{
qname: "example.org",
qtype: dns.TypeA,
remote: "2003::1/64",
expectedCode: dns.RcodeSuccess,
expectedReply: []string{"example.org.", "_udp.example.org."},
expectedErr: nil,
},
{
qname: "Example.ORG",
qtype: dns.TypeA,
remote: "2003::1/64",
expectedCode: dns.RcodeSuccess,
expectedReply: []string{"Example.ORG.", "_udp.Example.ORG."},
expectedErr: nil,
},
}
ctx := context.TODO()
@@ -42,10 +61,8 @@ func TestWhoami(t *testing.T) {
for i, tc := range tests {
req := new(dns.Msg)
req.SetQuestion(dns.Fqdn(tc.qname), tc.qtype)
rec := dnstest.NewRecorder(&test.ResponseWriter{})
rec := dnstest.NewRecorder(&test.ResponseWriter{RemoteIP: tc.remote})
code, err := wh.ServeDNS(ctx, rec, req)
if err != tc.expectedErr {
t.Errorf("Test %d: Expected error %v, but got %v", i, tc.expectedErr, err)
}