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/v1" 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 request = &osloginpb.ImportSshPublicKeyRequest{ 403 Parent: formattedParent, 404 } 405 406 c, err := NewClient(context.Background(), clientOpt) 407 if err != nil { 408 t.Fatal(err) 409 } 410 411 resp, err := c.ImportSshPublicKey(context.Background(), request) 412 413 if err != nil { 414 t.Fatal(err) 415 } 416 417 if want, got := request, mockOsLogin.reqs[0]; !proto.Equal(want, got) { 418 t.Errorf("wrong request %q, want %q", got, want) 419 } 420 421 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 422 t.Errorf("wrong response %q, want %q)", got, want) 423 } 424} 425 426func TestOsLoginServiceImportSshPublicKeyError(t *testing.T) { 427 errCode := codes.PermissionDenied 428 mockOsLogin.err = gstatus.Error(errCode, "test error") 429 430 var formattedParent string = fmt.Sprintf("users/%s", "[USER]") 431 var request = &osloginpb.ImportSshPublicKeyRequest{ 432 Parent: formattedParent, 433 } 434 435 c, err := NewClient(context.Background(), clientOpt) 436 if err != nil { 437 t.Fatal(err) 438 } 439 440 resp, err := c.ImportSshPublicKey(context.Background(), request) 441 442 if st, ok := gstatus.FromError(err); !ok { 443 t.Errorf("got error %v, expected grpc error", err) 444 } else if c := st.Code(); c != errCode { 445 t.Errorf("got error code %q, want %q", c, errCode) 446 } 447 _ = resp 448} 449func TestOsLoginServiceUpdateSshPublicKey(t *testing.T) { 450 var key string = "key106079" 451 var expirationTimeUsec int64 = 2058878882 452 var fingerprint string = "fingerprint-1375934236" 453 var name2 string = "name2-1052831874" 454 var expectedResponse = &commonpb.SshPublicKey{ 455 Key: key, 456 ExpirationTimeUsec: expirationTimeUsec, 457 Fingerprint: fingerprint, 458 Name: name2, 459 } 460 461 mockOsLogin.err = nil 462 mockOsLogin.reqs = nil 463 464 mockOsLogin.resps = append(mockOsLogin.resps[:0], expectedResponse) 465 466 var formattedName string = fmt.Sprintf("users/%s/sshPublicKeys/%s", "[USER]", "[FINGERPRINT]") 467 var sshPublicKey *commonpb.SshPublicKey = &commonpb.SshPublicKey{} 468 var request = &osloginpb.UpdateSshPublicKeyRequest{ 469 Name: formattedName, 470 SshPublicKey: sshPublicKey, 471 } 472 473 c, err := NewClient(context.Background(), clientOpt) 474 if err != nil { 475 t.Fatal(err) 476 } 477 478 resp, err := c.UpdateSshPublicKey(context.Background(), request) 479 480 if err != nil { 481 t.Fatal(err) 482 } 483 484 if want, got := request, mockOsLogin.reqs[0]; !proto.Equal(want, got) { 485 t.Errorf("wrong request %q, want %q", got, want) 486 } 487 488 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 489 t.Errorf("wrong response %q, want %q)", got, want) 490 } 491} 492 493func TestOsLoginServiceUpdateSshPublicKeyError(t *testing.T) { 494 errCode := codes.PermissionDenied 495 mockOsLogin.err = gstatus.Error(errCode, "test error") 496 497 var formattedName string = fmt.Sprintf("users/%s/sshPublicKeys/%s", "[USER]", "[FINGERPRINT]") 498 var sshPublicKey *commonpb.SshPublicKey = &commonpb.SshPublicKey{} 499 var request = &osloginpb.UpdateSshPublicKeyRequest{ 500 Name: formattedName, 501 SshPublicKey: sshPublicKey, 502 } 503 504 c, err := NewClient(context.Background(), clientOpt) 505 if err != nil { 506 t.Fatal(err) 507 } 508 509 resp, err := c.UpdateSshPublicKey(context.Background(), request) 510 511 if st, ok := gstatus.FromError(err); !ok { 512 t.Errorf("got error %v, expected grpc error", err) 513 } else if c := st.Code(); c != errCode { 514 t.Errorf("got error code %q, want %q", c, errCode) 515 } 516 _ = resp 517} 518