You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

160 lines
4.1 KiB

  1. // Copyright 2019 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // https://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. // Code generated by gapic-generator. DO NOT EDIT.
  15. package vision
  16. import (
  17. visionpb "google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1"
  18. )
  19. import (
  20. "context"
  21. "flag"
  22. "fmt"
  23. "io"
  24. "log"
  25. "net"
  26. "os"
  27. "strings"
  28. "testing"
  29. "github.com/golang/protobuf/proto"
  30. "github.com/golang/protobuf/ptypes"
  31. "google.golang.org/api/option"
  32. status "google.golang.org/genproto/googleapis/rpc/status"
  33. "google.golang.org/grpc"
  34. "google.golang.org/grpc/codes"
  35. "google.golang.org/grpc/metadata"
  36. gstatus "google.golang.org/grpc/status"
  37. )
  38. var _ = io.EOF
  39. var _ = ptypes.MarshalAny
  40. var _ status.Status
  41. type mockImageAnnotatorServer struct {
  42. // Embed for forward compatibility.
  43. // Tests will keep working if more methods are added
  44. // in the future.
  45. visionpb.ImageAnnotatorServer
  46. reqs []proto.Message
  47. // If set, all calls return this error.
  48. err error
  49. // responses to return if err == nil
  50. resps []proto.Message
  51. }
  52. func (s *mockImageAnnotatorServer) BatchAnnotateImages(ctx context.Context, req *visionpb.BatchAnnotateImagesRequest) (*visionpb.BatchAnnotateImagesResponse, error) {
  53. md, _ := metadata.FromIncomingContext(ctx)
  54. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  55. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  56. }
  57. s.reqs = append(s.reqs, req)
  58. if s.err != nil {
  59. return nil, s.err
  60. }
  61. return s.resps[0].(*visionpb.BatchAnnotateImagesResponse), nil
  62. }
  63. // clientOpt is the option tests should use to connect to the test server.
  64. // It is initialized by TestMain.
  65. var clientOpt option.ClientOption
  66. var (
  67. mockImageAnnotator mockImageAnnotatorServer
  68. )
  69. func TestMain(m *testing.M) {
  70. flag.Parse()
  71. serv := grpc.NewServer()
  72. visionpb.RegisterImageAnnotatorServer(serv, &mockImageAnnotator)
  73. lis, err := net.Listen("tcp", "localhost:0")
  74. if err != nil {
  75. log.Fatal(err)
  76. }
  77. go serv.Serve(lis)
  78. conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
  79. if err != nil {
  80. log.Fatal(err)
  81. }
  82. clientOpt = option.WithGRPCConn(conn)
  83. os.Exit(m.Run())
  84. }
  85. func TestImageAnnotatorBatchAnnotateImages(t *testing.T) {
  86. var expectedResponse *visionpb.BatchAnnotateImagesResponse = &visionpb.BatchAnnotateImagesResponse{}
  87. mockImageAnnotator.err = nil
  88. mockImageAnnotator.reqs = nil
  89. mockImageAnnotator.resps = append(mockImageAnnotator.resps[:0], expectedResponse)
  90. var requests []*visionpb.AnnotateImageRequest = nil
  91. var request = &visionpb.BatchAnnotateImagesRequest{
  92. Requests: requests,
  93. }
  94. c, err := NewImageAnnotatorClient(context.Background(), clientOpt)
  95. if err != nil {
  96. t.Fatal(err)
  97. }
  98. resp, err := c.BatchAnnotateImages(context.Background(), request)
  99. if err != nil {
  100. t.Fatal(err)
  101. }
  102. if want, got := request, mockImageAnnotator.reqs[0]; !proto.Equal(want, got) {
  103. t.Errorf("wrong request %q, want %q", got, want)
  104. }
  105. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  106. t.Errorf("wrong response %q, want %q)", got, want)
  107. }
  108. }
  109. func TestImageAnnotatorBatchAnnotateImagesError(t *testing.T) {
  110. errCode := codes.PermissionDenied
  111. mockImageAnnotator.err = gstatus.Error(errCode, "test error")
  112. var requests []*visionpb.AnnotateImageRequest = nil
  113. var request = &visionpb.BatchAnnotateImagesRequest{
  114. Requests: requests,
  115. }
  116. c, err := NewImageAnnotatorClient(context.Background(), clientOpt)
  117. if err != nil {
  118. t.Fatal(err)
  119. }
  120. resp, err := c.BatchAnnotateImages(context.Background(), request)
  121. if st, ok := gstatus.FromError(err); !ok {
  122. t.Errorf("got error %v, expected grpc error", err)
  123. } else if c := st.Code(); c != errCode {
  124. t.Errorf("got error code %q, want %q", c, errCode)
  125. }
  126. _ = resp
  127. }