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.
 
 
 

267 lines
7.2 KiB

  1. // Copyright 2018 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. // AUTO-GENERATED CODE. DO NOT EDIT.
  15. package asset
  16. import (
  17. assetpb "google.golang.org/genproto/googleapis/cloud/asset/v1beta1"
  18. longrunningpb "google.golang.org/genproto/googleapis/longrunning"
  19. )
  20. import (
  21. "context"
  22. "flag"
  23. "fmt"
  24. "io"
  25. "log"
  26. "net"
  27. "os"
  28. "strings"
  29. "testing"
  30. "github.com/golang/protobuf/proto"
  31. "github.com/golang/protobuf/ptypes"
  32. "google.golang.org/api/option"
  33. status "google.golang.org/genproto/googleapis/rpc/status"
  34. "google.golang.org/grpc"
  35. "google.golang.org/grpc/codes"
  36. "google.golang.org/grpc/metadata"
  37. gstatus "google.golang.org/grpc/status"
  38. )
  39. var _ = io.EOF
  40. var _ = ptypes.MarshalAny
  41. var _ status.Status
  42. type mockAssetServer struct {
  43. // Embed for forward compatibility.
  44. // Tests will keep working if more methods are added
  45. // in the future.
  46. assetpb.AssetServiceServer
  47. reqs []proto.Message
  48. // If set, all calls return this error.
  49. err error
  50. // responses to return if err == nil
  51. resps []proto.Message
  52. }
  53. func (s *mockAssetServer) ExportAssets(ctx context.Context, req *assetpb.ExportAssetsRequest) (*longrunningpb.Operation, error) {
  54. md, _ := metadata.FromIncomingContext(ctx)
  55. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  56. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  57. }
  58. s.reqs = append(s.reqs, req)
  59. if s.err != nil {
  60. return nil, s.err
  61. }
  62. return s.resps[0].(*longrunningpb.Operation), nil
  63. }
  64. func (s *mockAssetServer) BatchGetAssetsHistory(ctx context.Context, req *assetpb.BatchGetAssetsHistoryRequest) (*assetpb.BatchGetAssetsHistoryResponse, error) {
  65. md, _ := metadata.FromIncomingContext(ctx)
  66. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  67. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  68. }
  69. s.reqs = append(s.reqs, req)
  70. if s.err != nil {
  71. return nil, s.err
  72. }
  73. return s.resps[0].(*assetpb.BatchGetAssetsHistoryResponse), nil
  74. }
  75. // clientOpt is the option tests should use to connect to the test server.
  76. // It is initialized by TestMain.
  77. var clientOpt option.ClientOption
  78. var (
  79. mockAsset mockAssetServer
  80. )
  81. func TestMain(m *testing.M) {
  82. flag.Parse()
  83. serv := grpc.NewServer()
  84. assetpb.RegisterAssetServiceServer(serv, &mockAsset)
  85. lis, err := net.Listen("tcp", "localhost:0")
  86. if err != nil {
  87. log.Fatal(err)
  88. }
  89. go serv.Serve(lis)
  90. conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
  91. if err != nil {
  92. log.Fatal(err)
  93. }
  94. clientOpt = option.WithGRPCConn(conn)
  95. os.Exit(m.Run())
  96. }
  97. func TestAssetServiceExportAssets(t *testing.T) {
  98. var expectedResponse *assetpb.ExportAssetsResponse = &assetpb.ExportAssetsResponse{}
  99. mockAsset.err = nil
  100. mockAsset.reqs = nil
  101. any, err := ptypes.MarshalAny(expectedResponse)
  102. if err != nil {
  103. t.Fatal(err)
  104. }
  105. mockAsset.resps = append(mockAsset.resps[:0], &longrunningpb.Operation{
  106. Name: "longrunning-test",
  107. Done: true,
  108. Result: &longrunningpb.Operation_Response{Response: any},
  109. })
  110. var formattedParent string = fmt.Sprintf("projects/%s", "[PROJECT]")
  111. var outputConfig *assetpb.OutputConfig = &assetpb.OutputConfig{}
  112. var request = &assetpb.ExportAssetsRequest{
  113. Parent: formattedParent,
  114. OutputConfig: outputConfig,
  115. }
  116. c, err := NewClient(context.Background(), clientOpt)
  117. if err != nil {
  118. t.Fatal(err)
  119. }
  120. respLRO, err := c.ExportAssets(context.Background(), request)
  121. if err != nil {
  122. t.Fatal(err)
  123. }
  124. resp, err := respLRO.Wait(context.Background())
  125. if err != nil {
  126. t.Fatal(err)
  127. }
  128. if want, got := request, mockAsset.reqs[0]; !proto.Equal(want, got) {
  129. t.Errorf("wrong request %q, want %q", got, want)
  130. }
  131. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  132. t.Errorf("wrong response %q, want %q)", got, want)
  133. }
  134. }
  135. func TestAssetServiceExportAssetsError(t *testing.T) {
  136. errCode := codes.PermissionDenied
  137. mockAsset.err = nil
  138. mockAsset.resps = append(mockAsset.resps[:0], &longrunningpb.Operation{
  139. Name: "longrunning-test",
  140. Done: true,
  141. Result: &longrunningpb.Operation_Error{
  142. Error: &status.Status{
  143. Code: int32(errCode),
  144. Message: "test error",
  145. },
  146. },
  147. })
  148. var formattedParent string = fmt.Sprintf("projects/%s", "[PROJECT]")
  149. var outputConfig *assetpb.OutputConfig = &assetpb.OutputConfig{}
  150. var request = &assetpb.ExportAssetsRequest{
  151. Parent: formattedParent,
  152. OutputConfig: outputConfig,
  153. }
  154. c, err := NewClient(context.Background(), clientOpt)
  155. if err != nil {
  156. t.Fatal(err)
  157. }
  158. respLRO, err := c.ExportAssets(context.Background(), request)
  159. if err != nil {
  160. t.Fatal(err)
  161. }
  162. resp, err := respLRO.Wait(context.Background())
  163. if st, ok := gstatus.FromError(err); !ok {
  164. t.Errorf("got error %v, expected grpc error", err)
  165. } else if c := st.Code(); c != errCode {
  166. t.Errorf("got error code %q, want %q", c, errCode)
  167. }
  168. _ = resp
  169. }
  170. func TestAssetServiceBatchGetAssetsHistory(t *testing.T) {
  171. var expectedResponse *assetpb.BatchGetAssetsHistoryResponse = &assetpb.BatchGetAssetsHistoryResponse{}
  172. mockAsset.err = nil
  173. mockAsset.reqs = nil
  174. mockAsset.resps = append(mockAsset.resps[:0], expectedResponse)
  175. var formattedParent string = fmt.Sprintf("projects/%s", "[PROJECT]")
  176. var contentType assetpb.ContentType = assetpb.ContentType_CONTENT_TYPE_UNSPECIFIED
  177. var readTimeWindow *assetpb.TimeWindow = &assetpb.TimeWindow{}
  178. var request = &assetpb.BatchGetAssetsHistoryRequest{
  179. Parent: formattedParent,
  180. ContentType: contentType,
  181. ReadTimeWindow: readTimeWindow,
  182. }
  183. c, err := NewClient(context.Background(), clientOpt)
  184. if err != nil {
  185. t.Fatal(err)
  186. }
  187. resp, err := c.BatchGetAssetsHistory(context.Background(), request)
  188. if err != nil {
  189. t.Fatal(err)
  190. }
  191. if want, got := request, mockAsset.reqs[0]; !proto.Equal(want, got) {
  192. t.Errorf("wrong request %q, want %q", got, want)
  193. }
  194. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  195. t.Errorf("wrong response %q, want %q)", got, want)
  196. }
  197. }
  198. func TestAssetServiceBatchGetAssetsHistoryError(t *testing.T) {
  199. errCode := codes.PermissionDenied
  200. mockAsset.err = gstatus.Error(errCode, "test error")
  201. var formattedParent string = fmt.Sprintf("projects/%s", "[PROJECT]")
  202. var contentType assetpb.ContentType = assetpb.ContentType_CONTENT_TYPE_UNSPECIFIED
  203. var readTimeWindow *assetpb.TimeWindow = &assetpb.TimeWindow{}
  204. var request = &assetpb.BatchGetAssetsHistoryRequest{
  205. Parent: formattedParent,
  206. ContentType: contentType,
  207. ReadTimeWindow: readTimeWindow,
  208. }
  209. c, err := NewClient(context.Background(), clientOpt)
  210. if err != nil {
  211. t.Fatal(err)
  212. }
  213. resp, err := c.BatchGetAssetsHistory(context.Background(), request)
  214. if st, ok := gstatus.FromError(err); !ok {
  215. t.Errorf("got error %v, expected grpc error", err)
  216. } else if c := st.Code(); c != errCode {
  217. t.Errorf("got error code %q, want %q", c, errCode)
  218. }
  219. _ = resp
  220. }