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 }