diff options
author | 2018-01-15 09:59:29 -0800 | |
---|---|---|
committer | 2018-01-15 09:59:29 -0800 | |
commit | 584dd87c70e29abc373f88be52bd2eee287ecace (patch) | |
tree | 6b4ac5286a5345c796071e4e9f7a9e6fce47a5ca /plugin/route53/route53_test.go | |
parent | d699b89063843d81cee35f128aaef9881439151f (diff) | |
download | coredns-584dd87c70e29abc373f88be52bd2eee287ecace.tar.gz coredns-584dd87c70e29abc373f88be52bd2eee287ecace.tar.zst coredns-584dd87c70e29abc373f88be52bd2eee287ecace.zip |
Add route53 plugin (#1390)
* Update vendor
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
* Add route53 plugin
This fix adds route53 plugin so that it is possible to
query route53 record through CoreDNS.
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
Diffstat (limited to 'plugin/route53/route53_test.go')
-rw-r--r-- | plugin/route53/route53_test.go | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/plugin/route53/route53_test.go b/plugin/route53/route53_test.go new file mode 100644 index 000000000..50f3c0c8f --- /dev/null +++ b/plugin/route53/route53_test.go @@ -0,0 +1,81 @@ +package route53 + +import ( + "testing" + + "github.com/coredns/coredns/plugin/pkg/dnstest" + "github.com/coredns/coredns/plugin/test" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/route53" + "github.com/aws/aws-sdk-go/service/route53/route53iface" + "github.com/miekg/dns" + "golang.org/x/net/context" +) + +type mockedRoute53 struct { + route53iface.Route53API +} + +func (mockedRoute53) ListResourceRecordSets(input *route53.ListResourceRecordSetsInput) (*route53.ListResourceRecordSetsOutput, error) { + return &route53.ListResourceRecordSetsOutput{ + ResourceRecordSets: []*route53.ResourceRecordSet{ + { + ResourceRecords: []*route53.ResourceRecord{ + { + Value: aws.String("10.2.3.4"), + }, + }, + }, + }, + }, nil +} + +func TestRoute53(t *testing.T) { + r := Route53{ + zones: []string{"example.org."}, + keys: map[string]string{"example.org.": "1234567890"}, + client: mockedRoute53{}, + } + + tests := []struct { + qname string + qtype uint16 + expectedCode int + expectedReply []string // ownernames for the records in the additional section. + expectedErr error + }{ + { + qname: "example.org", + qtype: dns.TypeA, + expectedCode: dns.RcodeSuccess, + expectedReply: []string{"example.org."}, + expectedErr: nil, + }, + } + + ctx := context.TODO() + + for i, tc := range tests { + req := new(dns.Msg) + req.SetQuestion(dns.Fqdn(tc.qname), tc.qtype) + + rec := dnstest.NewRecorder(&test.ResponseWriter{}) + code, err := r.ServeDNS(ctx, rec, req) + + if err != tc.expectedErr { + t.Errorf("Test %d: Expected error %v, but got %v", i, tc.expectedErr, err) + } + if code != int(tc.expectedCode) { + t.Errorf("Test %d: Expected status code %d, but got %d", i, tc.expectedCode, code) + } + if len(tc.expectedReply) != 0 { + for i, expected := range tc.expectedReply { + actual := rec.Msg.Answer[i].Header().Name + if actual != expected { + t.Errorf("Test %d: Expected answer %s, but got %s", i, expected, actual) + } + } + } + } +} |