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
15// Code generated by gapic-generator. DO NOT EDIT.
16
17package longrunning
18
19import (
20	emptypb "github.com/golang/protobuf/ptypes/empty"
21	longrunningpb "google.golang.org/genproto/googleapis/longrunning"
22)
23
24import (
25	"context"
26	"flag"
27	"fmt"
28	"io"
29	"log"
30	"net"
31	"os"
32	"strings"
33	"testing"
34
35	"github.com/golang/protobuf/proto"
36	"github.com/golang/protobuf/ptypes"
37	"google.golang.org/api/option"
38	status "google.golang.org/genproto/googleapis/rpc/status"
39	"google.golang.org/grpc"
40	"google.golang.org/grpc/codes"
41	"google.golang.org/grpc/metadata"
42	gstatus "google.golang.org/grpc/status"
43)
44
45var _ = io.EOF
46var _ = ptypes.MarshalAny
47var _ status.Status
48
49type mockOperationsServer struct {
50	// Embed for forward compatibility.
51	// Tests will keep working if more methods are added
52	// in the future.
53	longrunningpb.OperationsServer
54
55	reqs []proto.Message
56
57	// If set, all calls return this error.
58	err error
59
60	// responses to return if err == nil
61	resps []proto.Message
62}
63
64func (s *mockOperationsServer) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest) (*longrunningpb.ListOperationsResponse, 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].(*longrunningpb.ListOperationsResponse), nil
74}
75
76func (s *mockOperationsServer) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest) (*longrunningpb.Operation, error) {
77	md, _ := metadata.FromIncomingContext(ctx)
78	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
79		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
80	}
81	s.reqs = append(s.reqs, req)
82	if s.err != nil {
83		return nil, s.err
84	}
85	return s.resps[0].(*longrunningpb.Operation), nil
86}
87
88func (s *mockOperationsServer) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest) (*emptypb.Empty, error) {
89	md, _ := metadata.FromIncomingContext(ctx)
90	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
91		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
92	}
93	s.reqs = append(s.reqs, req)
94	if s.err != nil {
95		return nil, s.err
96	}
97	return s.resps[0].(*emptypb.Empty), nil
98}
99
100func (s *mockOperationsServer) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest) (*emptypb.Empty, error) {
101	md, _ := metadata.FromIncomingContext(ctx)
102	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
103		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
104	}
105	s.reqs = append(s.reqs, req)
106	if s.err != nil {
107		return nil, s.err
108	}
109	return s.resps[0].(*emptypb.Empty), nil
110}
111
112// clientOpt is the option tests should use to connect to the test server.
113// It is initialized by TestMain.
114var clientOpt option.ClientOption
115
116var (
117	mockOperations mockOperationsServer
118)
119
120func TestMain(m *testing.M) {
121	flag.Parse()
122
123	serv := grpc.NewServer()
124	longrunningpb.RegisterOperationsServer(serv, &mockOperations)
125
126	lis, err := net.Listen("tcp", "localhost:0")
127	if err != nil {
128		log.Fatal(err)
129	}
130	go serv.Serve(lis)
131
132	conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
133	if err != nil {
134		log.Fatal(err)
135	}
136	clientOpt = option.WithGRPCConn(conn)
137
138	os.Exit(m.Run())
139}
140
141func TestOperationsGetOperation(t *testing.T) {
142	var name2 string = "name2-1052831874"
143	var done bool = true
144	var expectedResponse = &longrunningpb.Operation{
145		Name: name2,
146		Done: done,
147	}
148
149	mockOperations.err = nil
150	mockOperations.reqs = nil
151
152	mockOperations.resps = append(mockOperations.resps[:0], expectedResponse)
153
154	var name string = "name3373707"
155	var request = &longrunningpb.GetOperationRequest{
156		Name: name,
157	}
158
159	c, err := NewOperationsClient(context.Background(), clientOpt)
160	if err != nil {
161		t.Fatal(err)
162	}
163
164	resp, err := c.GetOperation(context.Background(), request)
165
166	if err != nil {
167		t.Fatal(err)
168	}
169
170	if want, got := request, mockOperations.reqs[0]; !proto.Equal(want, got) {
171		t.Errorf("wrong request %q, want %q", got, want)
172	}
173
174	if want, got := expectedResponse, resp; !proto.Equal(want, got) {
175		t.Errorf("wrong response %q, want %q)", got, want)
176	}
177}
178
179func TestOperationsGetOperationError(t *testing.T) {
180	errCode := codes.PermissionDenied
181	mockOperations.err = gstatus.Error(errCode, "test error")
182
183	var name string = "name3373707"
184	var request = &longrunningpb.GetOperationRequest{
185		Name: name,
186	}
187
188	c, err := NewOperationsClient(context.Background(), clientOpt)
189	if err != nil {
190		t.Fatal(err)
191	}
192
193	resp, err := c.GetOperation(context.Background(), request)
194
195	if st, ok := gstatus.FromError(err); !ok {
196		t.Errorf("got error %v, expected grpc error", err)
197	} else if c := st.Code(); c != errCode {
198		t.Errorf("got error code %q, want %q", c, errCode)
199	}
200	_ = resp
201}
202func TestOperationsListOperations(t *testing.T) {
203	var nextPageToken string = ""
204	var operationsElement *longrunningpb.Operation = &longrunningpb.Operation{}
205	var operations = []*longrunningpb.Operation{operationsElement}
206	var expectedResponse = &longrunningpb.ListOperationsResponse{
207		NextPageToken: nextPageToken,
208		Operations:    operations,
209	}
210
211	mockOperations.err = nil
212	mockOperations.reqs = nil
213
214	mockOperations.resps = append(mockOperations.resps[:0], expectedResponse)
215
216	var name string = "name3373707"
217	var filter string = "filter-1274492040"
218	var request = &longrunningpb.ListOperationsRequest{
219		Name:   name,
220		Filter: filter,
221	}
222
223	c, err := NewOperationsClient(context.Background(), clientOpt)
224	if err != nil {
225		t.Fatal(err)
226	}
227
228	resp, err := c.ListOperations(context.Background(), request).Next()
229
230	if err != nil {
231		t.Fatal(err)
232	}
233
234	if want, got := request, mockOperations.reqs[0]; !proto.Equal(want, got) {
235		t.Errorf("wrong request %q, want %q", got, want)
236	}
237
238	want := (interface{})(expectedResponse.Operations[0])
239	got := (interface{})(resp)
240	var ok bool
241
242	switch want := (want).(type) {
243	case proto.Message:
244		ok = proto.Equal(want, got.(proto.Message))
245	default:
246		ok = want == got
247	}
248	if !ok {
249		t.Errorf("wrong response %q, want %q)", got, want)
250	}
251}
252
253func TestOperationsListOperationsError(t *testing.T) {
254	errCode := codes.PermissionDenied
255	mockOperations.err = gstatus.Error(errCode, "test error")
256
257	var name string = "name3373707"
258	var filter string = "filter-1274492040"
259	var request = &longrunningpb.ListOperationsRequest{
260		Name:   name,
261		Filter: filter,
262	}
263
264	c, err := NewOperationsClient(context.Background(), clientOpt)
265	if err != nil {
266		t.Fatal(err)
267	}
268
269	resp, err := c.ListOperations(context.Background(), request).Next()
270
271	if st, ok := gstatus.FromError(err); !ok {
272		t.Errorf("got error %v, expected grpc error", err)
273	} else if c := st.Code(); c != errCode {
274		t.Errorf("got error code %q, want %q", c, errCode)
275	}
276	_ = resp
277}
278func TestOperationsCancelOperation(t *testing.T) {
279	var expectedResponse *emptypb.Empty = &emptypb.Empty{}
280
281	mockOperations.err = nil
282	mockOperations.reqs = nil
283
284	mockOperations.resps = append(mockOperations.resps[:0], expectedResponse)
285
286	var name string = "name3373707"
287	var request = &longrunningpb.CancelOperationRequest{
288		Name: name,
289	}
290
291	c, err := NewOperationsClient(context.Background(), clientOpt)
292	if err != nil {
293		t.Fatal(err)
294	}
295
296	err = c.CancelOperation(context.Background(), request)
297
298	if err != nil {
299		t.Fatal(err)
300	}
301
302	if want, got := request, mockOperations.reqs[0]; !proto.Equal(want, got) {
303		t.Errorf("wrong request %q, want %q", got, want)
304	}
305
306}
307
308func TestOperationsCancelOperationError(t *testing.T) {
309	errCode := codes.PermissionDenied
310	mockOperations.err = gstatus.Error(errCode, "test error")
311
312	var name string = "name3373707"
313	var request = &longrunningpb.CancelOperationRequest{
314		Name: name,
315	}
316
317	c, err := NewOperationsClient(context.Background(), clientOpt)
318	if err != nil {
319		t.Fatal(err)
320	}
321
322	err = c.CancelOperation(context.Background(), request)
323
324	if st, ok := gstatus.FromError(err); !ok {
325		t.Errorf("got error %v, expected grpc error", err)
326	} else if c := st.Code(); c != errCode {
327		t.Errorf("got error code %q, want %q", c, errCode)
328	}
329}
330func TestOperationsDeleteOperation(t *testing.T) {
331	var expectedResponse *emptypb.Empty = &emptypb.Empty{}
332
333	mockOperations.err = nil
334	mockOperations.reqs = nil
335
336	mockOperations.resps = append(mockOperations.resps[:0], expectedResponse)
337
338	var name string = "name3373707"
339	var request = &longrunningpb.DeleteOperationRequest{
340		Name: name,
341	}
342
343	c, err := NewOperationsClient(context.Background(), clientOpt)
344	if err != nil {
345		t.Fatal(err)
346	}
347
348	err = c.DeleteOperation(context.Background(), request)
349
350	if err != nil {
351		t.Fatal(err)
352	}
353
354	if want, got := request, mockOperations.reqs[0]; !proto.Equal(want, got) {
355		t.Errorf("wrong request %q, want %q", got, want)
356	}
357
358}
359
360func TestOperationsDeleteOperationError(t *testing.T) {
361	errCode := codes.PermissionDenied
362	mockOperations.err = gstatus.Error(errCode, "test error")
363
364	var name string = "name3373707"
365	var request = &longrunningpb.DeleteOperationRequest{
366		Name: name,
367	}
368
369	c, err := NewOperationsClient(context.Background(), clientOpt)
370	if err != nil {
371		t.Fatal(err)
372	}
373
374	err = c.DeleteOperation(context.Background(), request)
375
376	if st, ok := gstatus.FromError(err); !ok {
377		t.Errorf("got error %v, expected grpc error", err)
378	} else if c := st.Code(); c != errCode {
379		t.Errorf("got error code %q, want %q", c, errCode)
380	}
381}
382