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 oslogin
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	commonpb "google.golang.org/genproto/googleapis/cloud/oslogin/common"
35	osloginpb "google.golang.org/genproto/googleapis/cloud/oslogin/v1beta"
36
37	status "google.golang.org/genproto/googleapis/rpc/status"
38	"google.golang.org/grpc"
39	"google.golang.org/grpc/codes"
40	"google.golang.org/grpc/metadata"
41
42	gstatus "google.golang.org/grpc/status"
43)
44
45var _ = io.EOF
46var _ = ptypes.MarshalAny
47var _ status.Status
48
49type mockOsLoginServer struct {
50	// Embed for forward compatibility.
51	// Tests will keep working if more methods are added
52	// in the future.
53	osloginpb.OsLoginServiceServer
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 *mockOsLoginServer) DeletePosixAccount(ctx context.Context, req *osloginpb.DeletePosixAccountRequest) (*emptypb.Empty, 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].(*emptypb.Empty), nil
74}
75
76func (s *mockOsLoginServer) DeleteSshPublicKey(ctx context.Context, req *osloginpb.DeleteSshPublicKeyRequest) (*emptypb.Empty, 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].(*emptypb.Empty), nil
86}
87
88func (s *mockOsLoginServer) GetLoginProfile(ctx context.Context, req *osloginpb.GetLoginProfileRequest) (*osloginpb.LoginProfile, 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].(*osloginpb.LoginProfile), nil
98}
99
100func (s *mockOsLoginServer) GetSshPublicKey(ctx context.Context, req *osloginpb.GetSshPublicKeyRequest) (*commonpb.SshPublicKey, 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].(*commonpb.SshPublicKey), nil
110}
111
112func (s *mockOsLoginServer) ImportSshPublicKey(ctx context.Context, req *osloginpb.ImportSshPublicKeyRequest) (*osloginpb.ImportSshPublicKeyResponse, error) {
113	md, _ := metadata.FromIncomingContext(ctx)
114	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
115		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
116	}
117	s.reqs = append(s.reqs, req)
118	if s.err != nil {
119		return nil, s.err
120	}
121	return s.resps[0].(*osloginpb.ImportSshPublicKeyResponse), nil
122}
123
124func (s *mockOsLoginServer) UpdateSshPublicKey(ctx context.Context, req *osloginpb.UpdateSshPublicKeyRequest) (*commonpb.SshPublicKey, error) {
125	md, _ := metadata.FromIncomingContext(ctx)
126	if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
127		return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
128	}
129	s.reqs = append(s.reqs, req)
130	if s.err != nil {
131		return nil, s.err
132	}
133	return s.resps[0].(*commonpb.SshPublicKey), nil
134}
135
136// clientOpt is the option tests should use to connect to the test server.
137// It is initialized by TestMain.
138var clientOpt option.ClientOption
139
140var (
141	mockOsLogin mockOsLoginServer
142)
143
144func TestMain(m *testing.M) {
145	flag.Parse()
146
147	serv := grpc.NewServer()
148	osloginpb.RegisterOsLoginServiceServer(serv, &mockOsLogin)
149
150	lis, err := net.Listen("tcp", "localhost:0")
151	if err != nil {
152		log.Fatal(err)
153	}
154	go serv.Serve(lis)
155
156	conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
157	if err != nil {
158		log.Fatal(err)
159	}
160	clientOpt = option.WithGRPCConn(conn)
161
162	os.Exit(m.Run())
163}
164
165func TestOsLoginServiceDeletePosixAccount(t *testing.T) {
166	var expectedResponse *emptypb.Empty = &emptypb.Empty{}
167
168	mockOsLogin.err = nil
169	mockOsLogin.reqs = nil
170
171	mockOsLogin.resps = append(mockOsLogin.resps[:0], expectedResponse)
172
173	var formattedName string = fmt.Sprintf("users/%s/projects/%s", "[USER]", "[PROJECT]")
174	var request = &osloginpb.DeletePosixAccountRequest{
175		Name: formattedName,
176	}
177
178	c, err := NewClient(context.Background(), clientOpt)
179	if err != nil {
180		t.Fatal(err)
181	}
182
183	err = c.DeletePosixAccount(context.Background(), request)
184
185	if err != nil {
186		t.Fatal(err)
187	}
188
189	if want, got := request, mockOsLogin.reqs[0]; !proto.Equal(want, got) {
190		t.Errorf("wrong request %q, want %q", got, want)
191	}
192
193}
194
195func TestOsLoginServiceDeletePosixAccountError(t *testing.T) {
196	errCode := codes.PermissionDenied
197	mockOsLogin.err = gstatus.Error(errCode, "test error")
198
199	var formattedName string = fmt.Sprintf("users/%s/projects/%s", "[USER]", "[PROJECT]")
200	var request = &osloginpb.DeletePosixAccountRequest{
201		Name: formattedName,
202	}
203
204	c, err := NewClient(context.Background(), clientOpt)
205	if err != nil {
206		t.Fatal(err)
207	}
208
209	err = c.DeletePosixAccount(context.Background(), request)
210
211	if st, ok := gstatus.FromError(err); !ok {
212		t.Errorf("got error %v, expected grpc error", err)
213	} else if c := st.Code(); c != errCode {
214		t.Errorf("got error code %q, want %q", c, errCode)
215	}
216}
217func TestOsLoginServiceDeleteSshPublicKey(t *testing.T) {
218	var expectedResponse *emptypb.Empty = &emptypb.Empty{}
219
220	mockOsLogin.err = nil
221	mockOsLogin.reqs = nil
222
223	mockOsLogin.resps = append(mockOsLogin.resps[:0], expectedResponse)
224
225	var formattedName string = fmt.Sprintf("users/%s/sshPublicKeys/%s", "[USER]", "[FINGERPRINT]")
226	var request = &osloginpb.DeleteSshPublicKeyRequest{
227		Name: formattedName,
228	}
229
230	c, err := NewClient(context.Background(), clientOpt)
231	if err != nil {
232		t.Fatal(err)
233	}
234
235	err = c.DeleteSshPublicKey(context.Background(), request)
236
237	if err != nil {
238		t.Fatal(err)
239	}
240
241	if want, got := request, mockOsLogin.reqs[0]; !proto.Equal(want, got) {
242		t.Errorf("wrong request %q, want %q", got, want)
243	}
244
245}
246
247func TestOsLoginServiceDeleteSshPublicKeyError(t *testing.T) {
248	errCode := codes.PermissionDenied
249	mockOsLogin.err = gstatus.Error(errCode, "test error")
250
251	var formattedName string = fmt.Sprintf("users/%s/sshPublicKeys/%s", "[USER]", "[FINGERPRINT]")
252	var request = &osloginpb.DeleteSshPublicKeyRequest{
253		Name: formattedName,
254	}
255
256	c, err := NewClient(context.Background(), clientOpt)
257	if err != nil {
258		t.Fatal(err)
259	}
260
261	err = c.DeleteSshPublicKey(context.Background(), request)
262
263	if st, ok := gstatus.FromError(err); !ok {
264		t.Errorf("got error %v, expected grpc error", err)
265	} else if c := st.Code(); c != errCode {
266		t.Errorf("got error code %q, want %q", c, errCode)
267	}
268}
269func TestOsLoginServiceGetLoginProfile(t *testing.T) {
270	var name2 string = "name2-1052831874"
271	var expectedResponse = &osloginpb.LoginProfile{
272		Name: name2,
273	}
274
275	mockOsLogin.err = nil
276	mockOsLogin.reqs = nil
277
278	mockOsLogin.resps = append(mockOsLogin.resps[:0], expectedResponse)
279
280	var formattedName string = fmt.Sprintf("users/%s", "[USER]")
281	var request = &osloginpb.GetLoginProfileRequest{
282		Name: formattedName,
283	}
284
285	c, err := NewClient(context.Background(), clientOpt)
286	if err != nil {
287		t.Fatal(err)
288	}
289
290	resp, err := c.GetLoginProfile(context.Background(), request)
291
292	if err != nil {
293		t.Fatal(err)
294	}
295
296	if want, got := request, mockOsLogin.reqs[0]; !proto.Equal(want, got) {
297		t.Errorf("wrong request %q, want %q", got, want)
298	}
299
300	if want, got := expectedResponse, resp; !proto.Equal(want, got) {
301		t.Errorf("wrong response %q, want %q)", got, want)
302	}
303}
304
305func TestOsLoginServiceGetLoginProfileError(t *testing.T) {
306	errCode := codes.PermissionDenied
307	mockOsLogin.err = gstatus.Error(errCode, "test error")
308
309	var formattedName string = fmt.Sprintf("users/%s", "[USER]")
310	var request = &osloginpb.GetLoginProfileRequest{
311		Name: formattedName,
312	}
313
314	c, err := NewClient(context.Background(), clientOpt)
315	if err != nil {
316		t.Fatal(err)
317	}
318
319	resp, err := c.GetLoginProfile(context.Background(), request)
320
321	if st, ok := gstatus.FromError(err); !ok {
322		t.Errorf("got error %v, expected grpc error", err)
323	} else if c := st.Code(); c != errCode {
324		t.Errorf("got error code %q, want %q", c, errCode)
325	}
326	_ = resp
327}
328func TestOsLoginServiceGetSshPublicKey(t *testing.T) {
329	var key string = "key106079"
330	var expirationTimeUsec int64 = 2058878882
331	var fingerprint string = "fingerprint-1375934236"
332	var name2 string = "name2-1052831874"
333	var expectedResponse = &commonpb.SshPublicKey{
334		Key:                key,
335		ExpirationTimeUsec: expirationTimeUsec,
336		Fingerprint:        fingerprint,
337		Name:               name2,
338	}
339
340	mockOsLogin.err = nil
341	mockOsLogin.reqs = nil
342
343	mockOsLogin.resps = append(mockOsLogin.resps[:0], expectedResponse)
344
345	var formattedName string = fmt.Sprintf("users/%s/sshPublicKeys/%s", "[USER]", "[FINGERPRINT]")
346	var request = &osloginpb.GetSshPublicKeyRequest{
347		Name: formattedName,
348	}
349
350	c, err := NewClient(context.Background(), clientOpt)
351	if err != nil {
352		t.Fatal(err)
353	}
354
355	resp, err := c.GetSshPublicKey(context.Background(), request)
356
357	if err != nil {
358		t.Fatal(err)
359	}
360
361	if want, got := request, mockOsLogin.reqs[0]; !proto.Equal(want, got) {
362		t.Errorf("wrong request %q, want %q", got, want)
363	}
364
365	if want, got := expectedResponse, resp; !proto.Equal(want, got) {
366		t.Errorf("wrong response %q, want %q)", got, want)
367	}
368}
369
370func TestOsLoginServiceGetSshPublicKeyError(t *testing.T) {
371	errCode := codes.PermissionDenied
372	mockOsLogin.err = gstatus.Error(errCode, "test error")
373
374	var formattedName string = fmt.Sprintf("users/%s/sshPublicKeys/%s", "[USER]", "[FINGERPRINT]")
375	var request = &osloginpb.GetSshPublicKeyRequest{
376		Name: formattedName,
377	}
378
379	c, err := NewClient(context.Background(), clientOpt)
380	if err != nil {
381		t.Fatal(err)
382	}
383
384	resp, err := c.GetSshPublicKey(context.Background(), request)
385
386	if st, ok := gstatus.FromError(err); !ok {
387		t.Errorf("got error %v, expected grpc error", err)
388	} else if c := st.Code(); c != errCode {
389		t.Errorf("got error code %q, want %q", c, errCode)
390	}
391	_ = resp
392}
393func TestOsLoginServiceImportSshPublicKey(t *testing.T) {
394	var expectedResponse *osloginpb.ImportSshPublicKeyResponse = &osloginpb.ImportSshPublicKeyResponse{}
395
396	mockOsLogin.err = nil
397	mockOsLogin.reqs = nil
398
399	mockOsLogin.resps = append(mockOsLogin.resps[:0], expectedResponse)
400
401	var formattedParent string = fmt.Sprintf("users/%s", "[USER]")
402	var sshPublicKey *commonpb.SshPublicKey = &commonpb.SshPublicKey{}
403	var request = &osloginpb.ImportSshPublicKeyRequest{
404		Parent:       formattedParent,
405		SshPublicKey: sshPublicKey,
406	}
407
408	c, err := NewClient(context.Background(), clientOpt)
409	if err != nil {
410		t.Fatal(err)
411	}
412
413	resp, err := c.ImportSshPublicKey(context.Background(), request)
414
415	if err != nil {
416		t.Fatal(err)
417	}
418
419	if want, got := request, mockOsLogin.reqs[0]; !proto.Equal(want, got) {
420		t.Errorf("wrong request %q, want %q", got, want)
421	}
422
423	if want, got := expectedResponse, resp; !proto.Equal(want, got) {
424		t.Errorf("wrong response %q, want %q)", got, want)
425	}
426}
427
428func TestOsLoginServiceImportSshPublicKeyError(t *testing.T) {
429	errCode := codes.PermissionDenied
430	mockOsLogin.err = gstatus.Error(errCode, "test error")
431
432	var formattedParent string = fmt.Sprintf("users/%s", "[USER]")
433	var sshPublicKey *commonpb.SshPublicKey = &commonpb.SshPublicKey{}
434	var request = &osloginpb.ImportSshPublicKeyRequest{
435		Parent:       formattedParent,
436		SshPublicKey: sshPublicKey,
437	}
438
439	c, err := NewClient(context.Background(), clientOpt)
440	if err != nil {
441		t.Fatal(err)
442	}
443
444	resp, err := c.ImportSshPublicKey(context.Background(), request)
445
446	if st, ok := gstatus.FromError(err); !ok {
447		t.Errorf("got error %v, expected grpc error", err)
448	} else if c := st.Code(); c != errCode {
449		t.Errorf("got error code %q, want %q", c, errCode)
450	}
451	_ = resp
452}
453func TestOsLoginServiceUpdateSshPublicKey(t *testing.T) {
454	var key string = "key106079"
455	var expirationTimeUsec int64 = 2058878882
456	var fingerprint string = "fingerprint-1375934236"
457	var name2 string = "name2-1052831874"
458	var expectedResponse = &commonpb.SshPublicKey{
459		Key:                key,
460		ExpirationTimeUsec: expirationTimeUsec,
461		Fingerprint:        fingerprint,
462		Name:               name2,
463	}
464
465	mockOsLogin.err = nil
466	mockOsLogin.reqs = nil
467
468	mockOsLogin.resps = append(mockOsLogin.resps[:0], expectedResponse)
469
470	var formattedName string = fmt.Sprintf("users/%s/sshPublicKeys/%s", "[USER]", "[FINGERPRINT]")
471	var sshPublicKey *commonpb.SshPublicKey = &commonpb.SshPublicKey{}
472	var request = &osloginpb.UpdateSshPublicKeyRequest{
473		Name:         formattedName,
474		SshPublicKey: sshPublicKey,
475	}
476
477	c, err := NewClient(context.Background(), clientOpt)
478	if err != nil {
479		t.Fatal(err)
480	}
481
482	resp, err := c.UpdateSshPublicKey(context.Background(), request)
483
484	if err != nil {
485		t.Fatal(err)
486	}
487
488	if want, got := request, mockOsLogin.reqs[0]; !proto.Equal(want, got) {
489		t.Errorf("wrong request %q, want %q", got, want)
490	}
491
492	if want, got := expectedResponse, resp; !proto.Equal(want, got) {
493		t.Errorf("wrong response %q, want %q)", got, want)
494	}
495}
496
497func TestOsLoginServiceUpdateSshPublicKeyError(t *testing.T) {
498	errCode := codes.PermissionDenied
499	mockOsLogin.err = gstatus.Error(errCode, "test error")
500
501	var formattedName string = fmt.Sprintf("users/%s/sshPublicKeys/%s", "[USER]", "[FINGERPRINT]")
502	var sshPublicKey *commonpb.SshPublicKey = &commonpb.SshPublicKey{}
503	var request = &osloginpb.UpdateSshPublicKeyRequest{
504		Name:         formattedName,
505		SshPublicKey: sshPublicKey,
506	}
507
508	c, err := NewClient(context.Background(), clientOpt)
509	if err != nil {
510		t.Fatal(err)
511	}
512
513	resp, err := c.UpdateSshPublicKey(context.Background(), request)
514
515	if st, ok := gstatus.FromError(err); !ok {
516		t.Errorf("got error %v, expected grpc error", err)
517	} else if c := st.Code(); c != errCode {
518		t.Errorf("got error code %q, want %q", c, errCode)
519	}
520	_ = resp
521}
522