diff options
author | 2021-07-15 09:32:39 +0200 | |
---|---|---|
committer | 2021-07-15 09:32:39 +0200 | |
commit | 00128bda4e2fa56ec4bf66e321bf3e00263d1188 (patch) | |
tree | 777af2d1db0a5133046f00e38eb41de98685fa91 /plugin/header/header_test.go | |
parent | faa10f61aff9cce538375586b71a9bdd0fab6422 (diff) | |
download | coredns-00128bda4e2fa56ec4bf66e321bf3e00263d1188.tar.gz coredns-00128bda4e2fa56ec4bf66e321bf3e00263d1188.tar.zst coredns-00128bda4e2fa56ec4bf66e321bf3e00263d1188.zip |
plugin/header: Introduce header plugin (#4752)
* Add header plugin
Signed-off-by: MQasimSarfraz <syed.qasim.sarfraz@gmail.com>
* fix import format
* improve README.md
* Add codeowners for header plugin
Diffstat (limited to 'plugin/header/header_test.go')
-rw-r--r-- | plugin/header/header_test.go | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/plugin/header/header_test.go b/plugin/header/header_test.go new file mode 100644 index 000000000..396e26d07 --- /dev/null +++ b/plugin/header/header_test.go @@ -0,0 +1,84 @@ +package header + +import ( + "context" + "testing" + + "github.com/coredns/coredns/plugin" + "github.com/coredns/coredns/plugin/pkg/dnstest" + "github.com/coredns/coredns/plugin/test" + + "github.com/miekg/dns" +) + +func TestHeader(t *testing.T) { + wr := dnstest.NewRecorder(&test.ResponseWriter{}) + next := plugin.HandlerFunc(func(ctx context.Context, writer dns.ResponseWriter, msg *dns.Msg) (int, error) { + writer.WriteMsg(msg) + return dns.RcodeSuccess, nil + }) + + tests := []struct { + handler plugin.Handler + got func(msg *dns.Msg) bool + expected bool + }{ + { + handler: Header{ + Rules: []Rule{{Flag: recursionAvailable, State: true}}, + Next: next, + }, + got: func(msg *dns.Msg) bool { + return msg.RecursionAvailable + }, + expected: true, + }, + { + handler: Header{ + Rules: []Rule{{Flag: recursionAvailable, State: true}}, + Next: next, + }, + got: func(msg *dns.Msg) bool { + return msg.RecursionAvailable + }, + expected: true, + }, + { + handler: Header{ + Rules: []Rule{{Flag: recursionDesired, State: true}}, + Next: next, + }, + got: func(msg *dns.Msg) bool { + return msg.RecursionDesired + }, + expected: true, + }, + { + handler: Header{ + Rules: []Rule{{Flag: authoritative, State: true}}, + Next: next, + }, + got: func(msg *dns.Msg) bool { + return msg.Authoritative + }, + expected: true, + }, + } + + for i, test := range tests { + m := new(dns.Msg) + + _, err := test.handler.ServeDNS(context.TODO(), wr, m) + if err != nil { + t.Errorf("Test %d: Expected no error, but got %s", i, err) + continue + } + + if test.got(m) != test.expected { + t.Errorf("Test %d: Expected flag state=%t, but got %t", i, test.expected, test.got(m)) + continue + } + + } + +} |