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