github.com/jhump/protoreflect@v1.16.0/grpcreflect/server_test.go (about)

     1  package grpcreflect
     2  
     3  import (
     4  	"testing"
     5  
     6  	"google.golang.org/grpc"
     7  
     8  	testprotosgrpc "github.com/jhump/protoreflect/internal/testprotos/grpc"
     9  	"github.com/jhump/protoreflect/internal/testutil"
    10  )
    11  
    12  type testService struct {
    13  	testprotosgrpc.DummyServiceServer
    14  }
    15  
    16  func TestLoadServiceDescriptors(t *testing.T) {
    17  	s := grpc.NewServer()
    18  	testprotosgrpc.RegisterDummyServiceServer(s, testService{})
    19  	sds, err := LoadServiceDescriptors(s)
    20  	testutil.Ok(t, err)
    21  	testutil.Eq(t, 1, len(sds))
    22  	sd := sds["testprotos.DummyService"]
    23  
    24  	cases := []struct{ method, request, response string }{
    25  		{"DoSomething", "testprotos.DummyRequest", "jhump.protoreflect.desc.Bar"},
    26  		{"DoSomethingElse", "testprotos.TestMessage", "testprotos.DummyResponse"},
    27  		{"DoSomethingAgain", "jhump.protoreflect.desc.Bar", "testprotos.AnotherTestMessage"},
    28  		{"DoSomethingForever", "testprotos.DummyRequest", "testprotos.DummyResponse"},
    29  	}
    30  
    31  	testutil.Eq(t, len(cases), len(sd.GetMethods()))
    32  
    33  	for i, c := range cases {
    34  		md := sd.GetMethods()[i]
    35  		testutil.Eq(t, c.method, md.GetName())
    36  		testutil.Eq(t, c.request, md.GetInputType().GetFullyQualifiedName())
    37  		testutil.Eq(t, c.response, md.GetOutputType().GetFullyQualifiedName())
    38  	}
    39  }
    40  
    41  func TestLoadServiceDescriptor(t *testing.T) {
    42  	sd, err := LoadServiceDescriptor(&testprotosgrpc.DummyService_ServiceDesc)
    43  	testutil.Ok(t, err)
    44  
    45  	cases := []struct{ method, request, response string }{
    46  		{"DoSomething", "testprotos.DummyRequest", "jhump.protoreflect.desc.Bar"},
    47  		{"DoSomethingElse", "testprotos.TestMessage", "testprotos.DummyResponse"},
    48  		{"DoSomethingAgain", "jhump.protoreflect.desc.Bar", "testprotos.AnotherTestMessage"},
    49  		{"DoSomethingForever", "testprotos.DummyRequest", "testprotos.DummyResponse"},
    50  	}
    51  
    52  	testutil.Eq(t, len(cases), len(sd.GetMethods()))
    53  
    54  	for i, c := range cases {
    55  		md := sd.GetMethods()[i]
    56  		testutil.Eq(t, c.method, md.GetName())
    57  		testutil.Eq(t, c.request, md.GetInputType().GetFullyQualifiedName())
    58  		testutil.Eq(t, c.response, md.GetOutputType().GetFullyQualifiedName())
    59  	}
    60  }