github.com/grpc-ecosystem/grpc-gateway/v2@v2.19.1/protoc-gen-grpc-gateway/internal/gengateway/generator_test.go (about) 1 package gengateway 2 3 import ( 4 "testing" 5 6 "github.com/grpc-ecosystem/grpc-gateway/v2/internal/descriptor" 7 "google.golang.org/protobuf/proto" 8 "google.golang.org/protobuf/types/descriptorpb" 9 ) 10 11 func newExampleFileDescriptorWithGoPkg(gp *descriptor.GoPackage, filenamePrefix string) *descriptor.File { 12 msgdesc := &descriptorpb.DescriptorProto{ 13 Name: proto.String("ExampleMessage"), 14 } 15 msg := &descriptor.Message{ 16 DescriptorProto: msgdesc, 17 } 18 msg1 := &descriptor.Message{ 19 DescriptorProto: msgdesc, 20 File: &descriptor.File{ 21 GoPkg: descriptor.GoPackage{ 22 Path: "github.com/golang/protobuf/ptypes/empty", 23 Name: "emptypb", 24 }, 25 }, 26 } 27 meth := &descriptorpb.MethodDescriptorProto{ 28 Name: proto.String("Example"), 29 InputType: proto.String("ExampleMessage"), 30 OutputType: proto.String("ExampleMessage"), 31 } 32 meth1 := &descriptorpb.MethodDescriptorProto{ 33 Name: proto.String("ExampleWithoutBindings"), 34 InputType: proto.String("empty.Empty"), 35 OutputType: proto.String("empty.Empty"), 36 } 37 svc := &descriptorpb.ServiceDescriptorProto{ 38 Name: proto.String("ExampleService"), 39 Method: []*descriptorpb.MethodDescriptorProto{meth, meth1}, 40 } 41 return &descriptor.File{ 42 FileDescriptorProto: &descriptorpb.FileDescriptorProto{ 43 Name: proto.String("example.proto"), 44 Package: proto.String("example"), 45 Dependency: []string{"a.example/b/c.proto", "a.example/d/e.proto"}, 46 MessageType: []*descriptorpb.DescriptorProto{msgdesc}, 47 Service: []*descriptorpb.ServiceDescriptorProto{svc}, 48 }, 49 GoPkg: *gp, 50 GeneratedFilenamePrefix: filenamePrefix, 51 Messages: []*descriptor.Message{msg}, 52 Services: []*descriptor.Service{ 53 { 54 ServiceDescriptorProto: svc, 55 Methods: []*descriptor.Method{ 56 { 57 MethodDescriptorProto: meth, 58 RequestType: msg, 59 ResponseType: msg, 60 Bindings: []*descriptor.Binding{ 61 { 62 HTTPMethod: "GET", 63 Body: &descriptor.Body{FieldPath: nil}, 64 }, 65 }, 66 }, 67 { 68 MethodDescriptorProto: meth1, 69 RequestType: msg1, 70 ResponseType: msg1, 71 }, 72 }, 73 }, 74 }, 75 } 76 } 77 78 func TestGenerator_Generate(t *testing.T) { 79 g := new(generator) 80 g.reg = descriptor.NewRegistry() 81 result, err := g.Generate([]*descriptor.File{ 82 crossLinkFixture(newExampleFileDescriptorWithGoPkg(&descriptor.GoPackage{ 83 Path: "example.com/path/to/example", 84 Name: "example_pb", 85 }, "path/to/example")), 86 }) 87 if err != nil { 88 t.Fatalf("failed to generate stubs: %v", err) 89 } 90 if len(result) != 1 { 91 t.Fatalf("expected to generate one file, got: %d", len(result)) 92 } 93 expectedName := "path/to/example.pb.gw.go" 94 gotName := result[0].GetName() 95 if gotName != expectedName { 96 t.Fatalf("invalid name %q, expected %q", gotName, expectedName) 97 } 98 }