...

Source file src/github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway/internal/gengateway/generator_test.go

Documentation: github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway/internal/gengateway

     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  }
    99  

View as plain text