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 database
18
19import (
20	"context"
21	"flag"
22	"fmt"
23	"io"
24	"log"
25	"net"
26	"os"
27	"strings"
28	"testing"
29
30	"github.com/golang/protobuf/proto"
31	"github.com/golang/protobuf/ptypes"
32	emptypb "github.com/golang/protobuf/ptypes/empty"
33	"google.golang.org/api/option"
34	iampb "google.golang.org/genproto/googleapis/iam/v1"
35	longrunningpb "google.golang.org/genproto/googleapis/longrunning"
36	databasepb "google.golang.org/genproto/googleapis/spanner/admin/database/v1"
37
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
43	gstatus "google.golang.org/grpc/status"
44)
45
46var _ = io.EOF
47var _ = ptypes.MarshalAny
48var _ status.Status
49
50type mockDatabaseAdminServer struct {
51	// Embed for forward compatibility.
52	// Tests will keep working if more methods are added
53	// in the future.
54	databasepb.DatabaseAdminServer
55
56	reqs []proto.Message
57
58	// If set, all calls return this error.
59	err error
60
61	// responses to return if err == nil
62	resps []proto.Message
63}
64
65func (s *mockDatabaseAdminServer) ListDatabases(ctx context.Context, req *databasepb.ListDatabasesRequest) (*databasepb.ListDatabasesResponse, error) {
66	md, _ := metadata.FromIncomingContext(ctx)
67	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
68		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
69	}
70	s.reqs = append(s.reqs, req)
71	if s.err != nil {
72		return nil, s.err
73	}
74	return s.resps[0].(*databasepb.ListDatabasesResponse), nil
75}
76
77func (s *mockDatabaseAdminServer) CreateDatabase(ctx context.Context, req *databasepb.CreateDatabaseRequest) (*longrunningpb.Operation, error) {
78	md, _ := metadata.FromIncomingContext(ctx)
79	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
80		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
81	}
82	s.reqs = append(s.reqs, req)
83	if s.err != nil {
84		return nil, s.err
85	}
86	return s.resps[0].(*longrunningpb.Operation), nil
87}
88
89func (s *mockDatabaseAdminServer) GetDatabase(ctx context.Context, req *databasepb.GetDatabaseRequest) (*databasepb.Database, error) {
90	md, _ := metadata.FromIncomingContext(ctx)
91	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
92		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
93	}
94	s.reqs = append(s.reqs, req)
95	if s.err != nil {
96		return nil, s.err
97	}
98	return s.resps[0].(*databasepb.Database), nil
99}
100
101func (s *mockDatabaseAdminServer) UpdateDatabaseDdl(ctx context.Context, req *databasepb.UpdateDatabaseDdlRequest) (*longrunningpb.Operation, error) {
102	md, _ := metadata.FromIncomingContext(ctx)
103	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
104		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
105	}
106	s.reqs = append(s.reqs, req)
107	if s.err != nil {
108		return nil, s.err
109	}
110	return s.resps[0].(*longrunningpb.Operation), nil
111}
112
113func (s *mockDatabaseAdminServer) DropDatabase(ctx context.Context, req *databasepb.DropDatabaseRequest) (*emptypb.Empty, error) {
114	md, _ := metadata.FromIncomingContext(ctx)
115	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
116		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
117	}
118	s.reqs = append(s.reqs, req)
119	if s.err != nil {
120		return nil, s.err
121	}
122	return s.resps[0].(*emptypb.Empty), nil
123}
124
125func (s *mockDatabaseAdminServer) GetDatabaseDdl(ctx context.Context, req *databasepb.GetDatabaseDdlRequest) (*databasepb.GetDatabaseDdlResponse, error) {
126	md, _ := metadata.FromIncomingContext(ctx)
127	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
128		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
129	}
130	s.reqs = append(s.reqs, req)
131	if s.err != nil {
132		return nil, s.err
133	}
134	return s.resps[0].(*databasepb.GetDatabaseDdlResponse), nil
135}
136
137func (s *mockDatabaseAdminServer) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest) (*iampb.Policy, error) {
138	md, _ := metadata.FromIncomingContext(ctx)
139	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
140		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
141	}
142	s.reqs = append(s.reqs, req)
143	if s.err != nil {
144		return nil, s.err
145	}
146	return s.resps[0].(*iampb.Policy), nil
147}
148
149func (s *mockDatabaseAdminServer) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest) (*iampb.Policy, error) {
150	md, _ := metadata.FromIncomingContext(ctx)
151	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
152		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
153	}
154	s.reqs = append(s.reqs, req)
155	if s.err != nil {
156		return nil, s.err
157	}
158	return s.resps[0].(*iampb.Policy), nil
159}
160
161func (s *mockDatabaseAdminServer) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest) (*iampb.TestIamPermissionsResponse, error) {
162	md, _ := metadata.FromIncomingContext(ctx)
163	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
164		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
165	}
166	s.reqs = append(s.reqs, req)
167	if s.err != nil {
168		return nil, s.err
169	}
170	return s.resps[0].(*iampb.TestIamPermissionsResponse), nil
171}
172
173// clientOpt is the option tests should use to connect to the test server.
174// It is initialized by TestMain.
175var clientOpt option.ClientOption
176
177var (
178	mockDatabaseAdmin mockDatabaseAdminServer
179)
180
181func TestMain(m *testing.M) {
182	flag.Parse()
183
184	serv := grpc.NewServer()
185	databasepb.RegisterDatabaseAdminServer(serv, &mockDatabaseAdmin)
186
187	lis, err := net.Listen("tcp", "localhost:0")
188	if err != nil {
189		log.Fatal(err)
190	}
191	go serv.Serve(lis)
192
193	conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
194	if err != nil {
195		log.Fatal(err)
196	}
197	clientOpt = option.WithGRPCConn(conn)
198
199	os.Exit(m.Run())
200}
201
202func TestDatabaseAdminCreateDatabase(t *testing.T) {
203	var name string = "name3373707"
204	var expectedResponse = &databasepb.Database{
205		Name: name,
206	}
207
208	mockDatabaseAdmin.err = nil
209	mockDatabaseAdmin.reqs = nil
210
211	any, err := ptypes.MarshalAny(expectedResponse)
212	if err != nil {
213		t.Fatal(err)
214	}
215	mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], &longrunningpb.Operation{
216		Name:   "longrunning-test",
217		Done:   true,
218		Result: &longrunningpb.Operation_Response{Response: any},
219	})
220
221	var formattedParent string = fmt.Sprintf("projects/%s/instances/%s", "[PROJECT]", "[INSTANCE]")
222	var createStatement string = "createStatement552974828"
223	var request = &databasepb.CreateDatabaseRequest{
224		Parent:          formattedParent,
225		CreateStatement: createStatement,
226	}
227
228	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
229	if err != nil {
230		t.Fatal(err)
231	}
232
233	respLRO, err := c.CreateDatabase(context.Background(), request)
234	if err != nil {
235		t.Fatal(err)
236	}
237	resp, err := respLRO.Wait(context.Background())
238
239	if err != nil {
240		t.Fatal(err)
241	}
242
243	if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
244		t.Errorf("wrong request %q, want %q", got, want)
245	}
246
247	if want, got := expectedResponse, resp; !proto.Equal(want, got) {
248		t.Errorf("wrong response %q, want %q)", got, want)
249	}
250}
251
252func TestDatabaseAdminCreateDatabaseError(t *testing.T) {
253	errCode := codes.PermissionDenied
254	mockDatabaseAdmin.err = nil
255	mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], &longrunningpb.Operation{
256		Name: "longrunning-test",
257		Done: true,
258		Result: &longrunningpb.Operation_Error{
259			Error: &status.Status{
260				Code:    int32(errCode),
261				Message: "test error",
262			},
263		},
264	})
265
266	var formattedParent string = fmt.Sprintf("projects/%s/instances/%s", "[PROJECT]", "[INSTANCE]")
267	var createStatement string = "createStatement552974828"
268	var request = &databasepb.CreateDatabaseRequest{
269		Parent:          formattedParent,
270		CreateStatement: createStatement,
271	}
272
273	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
274	if err != nil {
275		t.Fatal(err)
276	}
277
278	respLRO, err := c.CreateDatabase(context.Background(), request)
279	if err != nil {
280		t.Fatal(err)
281	}
282	resp, err := respLRO.Wait(context.Background())
283
284	if st, ok := gstatus.FromError(err); !ok {
285		t.Errorf("got error %v, expected grpc error", err)
286	} else if c := st.Code(); c != errCode {
287		t.Errorf("got error code %q, want %q", c, errCode)
288	}
289	_ = resp
290}
291func TestDatabaseAdminGetDatabase(t *testing.T) {
292	var name2 string = "name2-1052831874"
293	var expectedResponse = &databasepb.Database{
294		Name: name2,
295	}
296
297	mockDatabaseAdmin.err = nil
298	mockDatabaseAdmin.reqs = nil
299
300	mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
301
302	var formattedName string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
303	var request = &databasepb.GetDatabaseRequest{
304		Name: formattedName,
305	}
306
307	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
308	if err != nil {
309		t.Fatal(err)
310	}
311
312	resp, err := c.GetDatabase(context.Background(), request)
313
314	if err != nil {
315		t.Fatal(err)
316	}
317
318	if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
319		t.Errorf("wrong request %q, want %q", got, want)
320	}
321
322	if want, got := expectedResponse, resp; !proto.Equal(want, got) {
323		t.Errorf("wrong response %q, want %q)", got, want)
324	}
325}
326
327func TestDatabaseAdminGetDatabaseError(t *testing.T) {
328	errCode := codes.PermissionDenied
329	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
330
331	var formattedName string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
332	var request = &databasepb.GetDatabaseRequest{
333		Name: formattedName,
334	}
335
336	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
337	if err != nil {
338		t.Fatal(err)
339	}
340
341	resp, err := c.GetDatabase(context.Background(), request)
342
343	if st, ok := gstatus.FromError(err); !ok {
344		t.Errorf("got error %v, expected grpc error", err)
345	} else if c := st.Code(); c != errCode {
346		t.Errorf("got error code %q, want %q", c, errCode)
347	}
348	_ = resp
349}
350func TestDatabaseAdminUpdateDatabaseDdl(t *testing.T) {
351	var expectedResponse *emptypb.Empty = &emptypb.Empty{}
352
353	mockDatabaseAdmin.err = nil
354	mockDatabaseAdmin.reqs = nil
355
356	any, err := ptypes.MarshalAny(expectedResponse)
357	if err != nil {
358		t.Fatal(err)
359	}
360	mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], &longrunningpb.Operation{
361		Name:   "longrunning-test",
362		Done:   true,
363		Result: &longrunningpb.Operation_Response{Response: any},
364	})
365
366	var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
367	var statements []string = nil
368	var request = &databasepb.UpdateDatabaseDdlRequest{
369		Database:   formattedDatabase,
370		Statements: statements,
371	}
372
373	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
374	if err != nil {
375		t.Fatal(err)
376	}
377
378	respLRO, err := c.UpdateDatabaseDdl(context.Background(), request)
379	if err != nil {
380		t.Fatal(err)
381	}
382	err = respLRO.Wait(context.Background())
383
384	if err != nil {
385		t.Fatal(err)
386	}
387
388	if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
389		t.Errorf("wrong request %q, want %q", got, want)
390	}
391
392}
393
394func TestDatabaseAdminUpdateDatabaseDdlError(t *testing.T) {
395	errCode := codes.PermissionDenied
396	mockDatabaseAdmin.err = nil
397	mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], &longrunningpb.Operation{
398		Name: "longrunning-test",
399		Done: true,
400		Result: &longrunningpb.Operation_Error{
401			Error: &status.Status{
402				Code:    int32(errCode),
403				Message: "test error",
404			},
405		},
406	})
407
408	var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
409	var statements []string = nil
410	var request = &databasepb.UpdateDatabaseDdlRequest{
411		Database:   formattedDatabase,
412		Statements: statements,
413	}
414
415	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
416	if err != nil {
417		t.Fatal(err)
418	}
419
420	respLRO, err := c.UpdateDatabaseDdl(context.Background(), request)
421	if err != nil {
422		t.Fatal(err)
423	}
424	err = respLRO.Wait(context.Background())
425
426	if st, ok := gstatus.FromError(err); !ok {
427		t.Errorf("got error %v, expected grpc error", err)
428	} else if c := st.Code(); c != errCode {
429		t.Errorf("got error code %q, want %q", c, errCode)
430	}
431}
432func TestDatabaseAdminDropDatabase(t *testing.T) {
433	var expectedResponse *emptypb.Empty = &emptypb.Empty{}
434
435	mockDatabaseAdmin.err = nil
436	mockDatabaseAdmin.reqs = nil
437
438	mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
439
440	var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
441	var request = &databasepb.DropDatabaseRequest{
442		Database: formattedDatabase,
443	}
444
445	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
446	if err != nil {
447		t.Fatal(err)
448	}
449
450	err = c.DropDatabase(context.Background(), request)
451
452	if err != nil {
453		t.Fatal(err)
454	}
455
456	if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
457		t.Errorf("wrong request %q, want %q", got, want)
458	}
459
460}
461
462func TestDatabaseAdminDropDatabaseError(t *testing.T) {
463	errCode := codes.PermissionDenied
464	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
465
466	var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
467	var request = &databasepb.DropDatabaseRequest{
468		Database: formattedDatabase,
469	}
470
471	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
472	if err != nil {
473		t.Fatal(err)
474	}
475
476	err = c.DropDatabase(context.Background(), request)
477
478	if st, ok := gstatus.FromError(err); !ok {
479		t.Errorf("got error %v, expected grpc error", err)
480	} else if c := st.Code(); c != errCode {
481		t.Errorf("got error code %q, want %q", c, errCode)
482	}
483}
484func TestDatabaseAdminGetDatabaseDdl(t *testing.T) {
485	var expectedResponse *databasepb.GetDatabaseDdlResponse = &databasepb.GetDatabaseDdlResponse{}
486
487	mockDatabaseAdmin.err = nil
488	mockDatabaseAdmin.reqs = nil
489
490	mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
491
492	var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
493	var request = &databasepb.GetDatabaseDdlRequest{
494		Database: formattedDatabase,
495	}
496
497	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
498	if err != nil {
499		t.Fatal(err)
500	}
501
502	resp, err := c.GetDatabaseDdl(context.Background(), request)
503
504	if err != nil {
505		t.Fatal(err)
506	}
507
508	if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
509		t.Errorf("wrong request %q, want %q", got, want)
510	}
511
512	if want, got := expectedResponse, resp; !proto.Equal(want, got) {
513		t.Errorf("wrong response %q, want %q)", got, want)
514	}
515}
516
517func TestDatabaseAdminGetDatabaseDdlError(t *testing.T) {
518	errCode := codes.PermissionDenied
519	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
520
521	var formattedDatabase string = fmt.Sprintf("projects/%s/instances/%s/databases/%s", "[PROJECT]", "[INSTANCE]", "[DATABASE]")
522	var request = &databasepb.GetDatabaseDdlRequest{
523		Database: formattedDatabase,
524	}
525
526	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
527	if err != nil {
528		t.Fatal(err)
529	}
530
531	resp, err := c.GetDatabaseDdl(context.Background(), request)
532
533	if st, ok := gstatus.FromError(err); !ok {
534		t.Errorf("got error %v, expected grpc error", err)
535	} else if c := st.Code(); c != errCode {
536		t.Errorf("got error code %q, want %q", c, errCode)
537	}
538	_ = resp
539}
540func TestDatabaseAdminSetIamPolicy(t *testing.T) {
541	var version int32 = 351608024
542	var etag []byte = []byte("21")
543	var expectedResponse = &iampb.Policy{
544		Version: version,
545		Etag:    etag,
546	}
547
548	mockDatabaseAdmin.err = nil
549	mockDatabaseAdmin.reqs = nil
550
551	mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
552
553	var resource string = "resource-341064690"
554	var policy *iampb.Policy = &iampb.Policy{}
555	var request = &iampb.SetIamPolicyRequest{
556		Resource: resource,
557		Policy:   policy,
558	}
559
560	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
561	if err != nil {
562		t.Fatal(err)
563	}
564
565	resp, err := c.SetIamPolicy(context.Background(), request)
566
567	if err != nil {
568		t.Fatal(err)
569	}
570
571	if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
572		t.Errorf("wrong request %q, want %q", got, want)
573	}
574
575	if want, got := expectedResponse, resp; !proto.Equal(want, got) {
576		t.Errorf("wrong response %q, want %q)", got, want)
577	}
578}
579
580func TestDatabaseAdminSetIamPolicyError(t *testing.T) {
581	errCode := codes.PermissionDenied
582	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
583
584	var resource string = "resource-341064690"
585	var policy *iampb.Policy = &iampb.Policy{}
586	var request = &iampb.SetIamPolicyRequest{
587		Resource: resource,
588		Policy:   policy,
589	}
590
591	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
592	if err != nil {
593		t.Fatal(err)
594	}
595
596	resp, err := c.SetIamPolicy(context.Background(), request)
597
598	if st, ok := gstatus.FromError(err); !ok {
599		t.Errorf("got error %v, expected grpc error", err)
600	} else if c := st.Code(); c != errCode {
601		t.Errorf("got error code %q, want %q", c, errCode)
602	}
603	_ = resp
604}
605func TestDatabaseAdminGetIamPolicy(t *testing.T) {
606	var version int32 = 351608024
607	var etag []byte = []byte("21")
608	var expectedResponse = &iampb.Policy{
609		Version: version,
610		Etag:    etag,
611	}
612
613	mockDatabaseAdmin.err = nil
614	mockDatabaseAdmin.reqs = nil
615
616	mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
617
618	var resource string = "resource-341064690"
619	var request = &iampb.GetIamPolicyRequest{
620		Resource: resource,
621	}
622
623	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
624	if err != nil {
625		t.Fatal(err)
626	}
627
628	resp, err := c.GetIamPolicy(context.Background(), request)
629
630	if err != nil {
631		t.Fatal(err)
632	}
633
634	if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
635		t.Errorf("wrong request %q, want %q", got, want)
636	}
637
638	if want, got := expectedResponse, resp; !proto.Equal(want, got) {
639		t.Errorf("wrong response %q, want %q)", got, want)
640	}
641}
642
643func TestDatabaseAdminGetIamPolicyError(t *testing.T) {
644	errCode := codes.PermissionDenied
645	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
646
647	var resource string = "resource-341064690"
648	var request = &iampb.GetIamPolicyRequest{
649		Resource: resource,
650	}
651
652	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
653	if err != nil {
654		t.Fatal(err)
655	}
656
657	resp, err := c.GetIamPolicy(context.Background(), request)
658
659	if st, ok := gstatus.FromError(err); !ok {
660		t.Errorf("got error %v, expected grpc error", err)
661	} else if c := st.Code(); c != errCode {
662		t.Errorf("got error code %q, want %q", c, errCode)
663	}
664	_ = resp
665}
666func TestDatabaseAdminTestIamPermissions(t *testing.T) {
667	var expectedResponse *iampb.TestIamPermissionsResponse = &iampb.TestIamPermissionsResponse{}
668
669	mockDatabaseAdmin.err = nil
670	mockDatabaseAdmin.reqs = nil
671
672	mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
673
674	var resource string = "resource-341064690"
675	var permissions []string = nil
676	var request = &iampb.TestIamPermissionsRequest{
677		Resource:    resource,
678		Permissions: permissions,
679	}
680
681	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
682	if err != nil {
683		t.Fatal(err)
684	}
685
686	resp, err := c.TestIamPermissions(context.Background(), request)
687
688	if err != nil {
689		t.Fatal(err)
690	}
691
692	if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
693		t.Errorf("wrong request %q, want %q", got, want)
694	}
695
696	if want, got := expectedResponse, resp; !proto.Equal(want, got) {
697		t.Errorf("wrong response %q, want %q)", got, want)
698	}
699}
700
701func TestDatabaseAdminTestIamPermissionsError(t *testing.T) {
702	errCode := codes.PermissionDenied
703	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
704
705	var resource string = "resource-341064690"
706	var permissions []string = nil
707	var request = &iampb.TestIamPermissionsRequest{
708		Resource:    resource,
709		Permissions: permissions,
710	}
711
712	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
713	if err != nil {
714		t.Fatal(err)
715	}
716
717	resp, err := c.TestIamPermissions(context.Background(), request)
718
719	if st, ok := gstatus.FromError(err); !ok {
720		t.Errorf("got error %v, expected grpc error", err)
721	} else if c := st.Code(); c != errCode {
722		t.Errorf("got error code %q, want %q", c, errCode)
723	}
724	_ = resp
725}
726func TestDatabaseAdminListDatabases(t *testing.T) {
727	var nextPageToken string = ""
728	var databasesElement *databasepb.Database = &databasepb.Database{}
729	var databases = []*databasepb.Database{databasesElement}
730	var expectedResponse = &databasepb.ListDatabasesResponse{
731		NextPageToken: nextPageToken,
732		Databases:     databases,
733	}
734
735	mockDatabaseAdmin.err = nil
736	mockDatabaseAdmin.reqs = nil
737
738	mockDatabaseAdmin.resps = append(mockDatabaseAdmin.resps[:0], expectedResponse)
739
740	var formattedParent string = fmt.Sprintf("projects/%s/instances/%s", "[PROJECT]", "[INSTANCE]")
741	var request = &databasepb.ListDatabasesRequest{
742		Parent: formattedParent,
743	}
744
745	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
746	if err != nil {
747		t.Fatal(err)
748	}
749
750	resp, err := c.ListDatabases(context.Background(), request).Next()
751
752	if err != nil {
753		t.Fatal(err)
754	}
755
756	if want, got := request, mockDatabaseAdmin.reqs[0]; !proto.Equal(want, got) {
757		t.Errorf("wrong request %q, want %q", got, want)
758	}
759
760	want := (interface{})(expectedResponse.Databases[0])
761	got := (interface{})(resp)
762	var ok bool
763
764	switch want := (want).(type) {
765	case proto.Message:
766		ok = proto.Equal(want, got.(proto.Message))
767	default:
768		ok = want == got
769	}
770	if !ok {
771		t.Errorf("wrong response %q, want %q)", got, want)
772	}
773}
774
775func TestDatabaseAdminListDatabasesError(t *testing.T) {
776	errCode := codes.PermissionDenied
777	mockDatabaseAdmin.err = gstatus.Error(errCode, "test error")
778
779	var formattedParent string = fmt.Sprintf("projects/%s/instances/%s", "[PROJECT]", "[INSTANCE]")
780	var request = &databasepb.ListDatabasesRequest{
781		Parent: formattedParent,
782	}
783
784	c, err := NewDatabaseAdminClient(context.Background(), clientOpt)
785	if err != nil {
786		t.Fatal(err)
787	}
788
789	resp, err := c.ListDatabases(context.Background(), request).Next()
790
791	if st, ok := gstatus.FromError(err); !ok {
792		t.Errorf("got error %v, expected grpc error", err)
793	} else if c := st.Code(); c != errCode {
794		t.Errorf("got error code %q, want %q", c, errCode)
795	}
796	_ = resp
797}
798