aboutsummaryrefslogtreecommitdiff
path: root/plugin/grpc/proxy_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/grpc/proxy_test.go')
-rw-r--r--plugin/grpc/proxy_test.go66
1 files changed, 66 insertions, 0 deletions
diff --git a/plugin/grpc/proxy_test.go b/plugin/grpc/proxy_test.go
new file mode 100644
index 000000000..cc4ebec82
--- /dev/null
+++ b/plugin/grpc/proxy_test.go
@@ -0,0 +1,66 @@
+package grpc
+
+import (
+ "context"
+ "errors"
+ "testing"
+
+ "github.com/coredns/coredns/pb"
+
+ "github.com/miekg/dns"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/credentials"
+)
+
+func TestProxy(t *testing.T) {
+ tests := map[string]struct {
+ p *Proxy
+ res *dns.Msg
+ wantErr bool
+ }{
+ "response_ok": {
+ p: &Proxy{},
+ res: &dns.Msg{},
+ wantErr: false,
+ },
+ "nil_response": {
+ p: &Proxy{},
+ res: nil,
+ wantErr: true,
+ },
+ "tls": {
+ p: &Proxy{dialOpts: []grpc.DialOption{grpc.WithTransportCredentials(credentials.NewTLS(nil))}},
+ res: &dns.Msg{},
+ wantErr: false,
+ },
+ }
+ for name, tt := range tests {
+ t.Run(name, func(t *testing.T) {
+ var mock *testServiceClient
+ if tt.res != nil {
+ msg, err := tt.res.Pack()
+ if err != nil {
+ t.Fatalf("Error packing response: %s", err.Error())
+ }
+ mock = &testServiceClient{&pb.DnsPacket{Msg: msg}, nil}
+ } else {
+ mock = &testServiceClient{nil, errors.New("server error")}
+ }
+ tt.p.client = mock
+
+ _, err := tt.p.query(context.TODO(), new(dns.Msg))
+ if err != nil && !tt.wantErr {
+ t.Fatalf("Error query(): %s", err.Error())
+ }
+ })
+ }
+}
+
+type testServiceClient struct {
+ dnsPacket *pb.DnsPacket
+ err error
+}
+
+func (m testServiceClient) Query(ctx context.Context, in *pb.DnsPacket, opts ...grpc.CallOption) (*pb.DnsPacket, error) {
+ return m.dnsPacket, m.err
+}