aboutsummaryrefslogtreecommitdiff
path: root/plugin/transfer/select_test.go
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2020-07-07 21:38:07 +0200
committerGravatar GitHub <noreply@github.com> 2020-07-07 12:38:07 -0700
commit68f1dd5ddf0451cc3a1b24a72c2965b8d896ffba (patch)
treedfac4d4c60f1e3a088737e15119c7648f056e407 /plugin/transfer/select_test.go
parent435d27b58d813ccc01ecc6d8620b78929c516c25 (diff)
downloadcoredns-68f1dd5ddf0451cc3a1b24a72c2965b8d896ffba.tar.gz
coredns-68f1dd5ddf0451cc3a1b24a72c2965b8d896ffba.tar.zst
coredns-68f1dd5ddf0451cc3a1b24a72c2965b8d896ffba.zip
Implement notifies for transfer plugin (#3972)
* Fix notifies in transfer plugin Signed-off-by: Miek Gieben <miek@miek.nl> * Make it compile Signed-off-by: Miek Gieben <miek@miek.nl> * Port more plugins Signed-off-by: Miek Gieben <miek@miek.nl> * golint Signed-off-by: Miek Gieben <miek@miek.nl> * Fix tests Signed-off-by: Miek Gieben <miek@miek.nl> * Fix notifies in transfer plugin Signed-off-by: Miek Gieben <miek@miek.nl> * Make it compile Signed-off-by: Miek Gieben <miek@miek.nl> * Port more plugins Signed-off-by: Miek Gieben <miek@miek.nl> * golint Signed-off-by: Miek Gieben <miek@miek.nl> * Fix tests Signed-off-by: Miek Gieben <miek@miek.nl> * Fix tests Signed-off-by: Miek Gieben <miek@miek.nl> * really fix test Signed-off-by: Miek Gieben <miek@miek.nl> * Implement ixfr fallback and unify file and auto for transfering Signed-off-by: Miek Gieben <miek@miek.nl> * Add transfer tests copied and modified from #3452 Signed-off-by: Miek Gieben <miek@miek.nl> * Test correct selection of plugin Signed-off-by: Miek Gieben <miek@miek.nl> * add upstream back in Signed-off-by: Miek Gieben <miek@miek.nl> * Implement ixfr fallback and unify file and auto for transfering Signed-off-by: Miek Gieben <miek@miek.nl> * fix test Signed-off-by: Miek Gieben <miek@miek.nl> * properly merge Signed-off-by: Miek Gieben <miek@miek.nl>
Diffstat (limited to 'plugin/transfer/select_test.go')
-rw-r--r--plugin/transfer/select_test.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/plugin/transfer/select_test.go b/plugin/transfer/select_test.go
new file mode 100644
index 000000000..6cb0d7681
--- /dev/null
+++ b/plugin/transfer/select_test.go
@@ -0,0 +1,58 @@
+package transfer
+
+import (
+ "context"
+ "fmt"
+ "testing"
+
+ "github.com/coredns/coredns/plugin/pkg/dnstest"
+ "github.com/coredns/coredns/plugin/test"
+
+ "github.com/miekg/dns"
+)
+
+type (
+ t1 struct{}
+ t2 struct{}
+)
+
+func (t t1) Transfer(zone string, serial uint32) (<-chan []dns.RR, error) {
+ const z = "example.org."
+ if zone != z {
+ return nil, ErrNotAuthoritative
+ }
+ return nil, fmt.Errorf(z)
+}
+func (t t2) Transfer(zone string, serial uint32) (<-chan []dns.RR, error) {
+ const z = "sub.example.org."
+ if zone != z {
+ return nil, ErrNotAuthoritative
+ }
+ return nil, fmt.Errorf(z)
+}
+
+func TestZoneSelection(t *testing.T) {
+ tr := &Transfer{
+ Transferers: []Transferer{t1{}, t2{}},
+ xfrs: []*xfr{
+ {
+ Zones: []string{"example.org."},
+ to: []string{"192.0.2.1"}, // RFC 5737 IP, no interface should have this address.
+ },
+ {
+ Zones: []string{"sub.example.org."},
+ to: []string{"*"},
+ },
+ },
+ }
+ r := new(dns.Msg)
+ r.SetAxfr("sub.example.org.")
+ w := dnstest.NewRecorder(&test.ResponseWriter{})
+ _, err := tr.ServeDNS(context.TODO(), w, r)
+ if err == nil {
+ t.Fatal("Expected error, got nil")
+ }
+ if x := err.Error(); x != "sub.example.org." {
+ t.Errorf("Expected transfer for zone %s, got %s", "sub.example.org", x)
+ }
+}