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 scheduler 18 19import ( 20 emptypb "github.com/golang/protobuf/ptypes/empty" 21 schedulerpb "google.golang.org/genproto/googleapis/cloud/scheduler/v1" 22 field_maskpb "google.golang.org/genproto/protobuf/field_mask" 23) 24 25import ( 26 "context" 27 "flag" 28 "fmt" 29 "io" 30 "log" 31 "net" 32 "os" 33 "strings" 34 "testing" 35 36 "github.com/golang/protobuf/proto" 37 "github.com/golang/protobuf/ptypes" 38 "google.golang.org/api/option" 39 status "google.golang.org/genproto/googleapis/rpc/status" 40 "google.golang.org/grpc" 41 "google.golang.org/grpc/codes" 42 "google.golang.org/grpc/metadata" 43 gstatus "google.golang.org/grpc/status" 44) 45 46var _ = io.EOF 47var _ = ptypes.MarshalAny 48var _ status.Status 49 50type mockCloudSchedulerServer struct { 51 // Embed for forward compatibility. 52 // Tests will keep working if more methods are added 53 // in the future. 54 schedulerpb.CloudSchedulerServer 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 *mockCloudSchedulerServer) ListJobs(ctx context.Context, req *schedulerpb.ListJobsRequest) (*schedulerpb.ListJobsResponse, 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].(*schedulerpb.ListJobsResponse), nil 75} 76 77func (s *mockCloudSchedulerServer) GetJob(ctx context.Context, req *schedulerpb.GetJobRequest) (*schedulerpb.Job, 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].(*schedulerpb.Job), nil 87} 88 89func (s *mockCloudSchedulerServer) CreateJob(ctx context.Context, req *schedulerpb.CreateJobRequest) (*schedulerpb.Job, 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].(*schedulerpb.Job), nil 99} 100 101func (s *mockCloudSchedulerServer) UpdateJob(ctx context.Context, req *schedulerpb.UpdateJobRequest) (*schedulerpb.Job, 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].(*schedulerpb.Job), nil 111} 112 113func (s *mockCloudSchedulerServer) DeleteJob(ctx context.Context, req *schedulerpb.DeleteJobRequest) (*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 *mockCloudSchedulerServer) PauseJob(ctx context.Context, req *schedulerpb.PauseJobRequest) (*schedulerpb.Job, 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].(*schedulerpb.Job), nil 135} 136 137func (s *mockCloudSchedulerServer) ResumeJob(ctx context.Context, req *schedulerpb.ResumeJobRequest) (*schedulerpb.Job, 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].(*schedulerpb.Job), nil 147} 148 149func (s *mockCloudSchedulerServer) RunJob(ctx context.Context, req *schedulerpb.RunJobRequest) (*schedulerpb.Job, 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].(*schedulerpb.Job), nil 159} 160 161// clientOpt is the option tests should use to connect to the test server. 162// It is initialized by TestMain. 163var clientOpt option.ClientOption 164 165var ( 166 mockCloudScheduler mockCloudSchedulerServer 167) 168 169func TestMain(m *testing.M) { 170 flag.Parse() 171 172 serv := grpc.NewServer() 173 schedulerpb.RegisterCloudSchedulerServer(serv, &mockCloudScheduler) 174 175 lis, err := net.Listen("tcp", "localhost:0") 176 if err != nil { 177 log.Fatal(err) 178 } 179 go serv.Serve(lis) 180 181 conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure()) 182 if err != nil { 183 log.Fatal(err) 184 } 185 clientOpt = option.WithGRPCConn(conn) 186 187 os.Exit(m.Run()) 188} 189 190func TestCloudSchedulerListJobs(t *testing.T) { 191 var nextPageToken string = "" 192 var jobsElement *schedulerpb.Job = &schedulerpb.Job{} 193 var jobs = []*schedulerpb.Job{jobsElement} 194 var expectedResponse = &schedulerpb.ListJobsResponse{ 195 NextPageToken: nextPageToken, 196 Jobs: jobs, 197 } 198 199 mockCloudScheduler.err = nil 200 mockCloudScheduler.reqs = nil 201 202 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 203 204 var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]") 205 var request = &schedulerpb.ListJobsRequest{ 206 Parent: formattedParent, 207 } 208 209 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 210 if err != nil { 211 t.Fatal(err) 212 } 213 214 resp, err := c.ListJobs(context.Background(), request).Next() 215 216 if err != nil { 217 t.Fatal(err) 218 } 219 220 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 221 t.Errorf("wrong request %q, want %q", got, want) 222 } 223 224 want := (interface{})(expectedResponse.Jobs[0]) 225 got := (interface{})(resp) 226 var ok bool 227 228 switch want := (want).(type) { 229 case proto.Message: 230 ok = proto.Equal(want, got.(proto.Message)) 231 default: 232 ok = want == got 233 } 234 if !ok { 235 t.Errorf("wrong response %q, want %q)", got, want) 236 } 237} 238 239func TestCloudSchedulerListJobsError(t *testing.T) { 240 errCode := codes.PermissionDenied 241 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 242 243 var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]") 244 var request = &schedulerpb.ListJobsRequest{ 245 Parent: formattedParent, 246 } 247 248 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 249 if err != nil { 250 t.Fatal(err) 251 } 252 253 resp, err := c.ListJobs(context.Background(), request).Next() 254 255 if st, ok := gstatus.FromError(err); !ok { 256 t.Errorf("got error %v, expected grpc error", err) 257 } else if c := st.Code(); c != errCode { 258 t.Errorf("got error code %q, want %q", c, errCode) 259 } 260 _ = resp 261} 262func TestCloudSchedulerGetJob(t *testing.T) { 263 var name2 string = "name2-1052831874" 264 var description string = "description-1724546052" 265 var schedule string = "schedule-697920873" 266 var timeZone string = "timeZone36848094" 267 var expectedResponse = &schedulerpb.Job{ 268 Name: name2, 269 Description: description, 270 Schedule: schedule, 271 TimeZone: timeZone, 272 } 273 274 mockCloudScheduler.err = nil 275 mockCloudScheduler.reqs = nil 276 277 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 278 279 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 280 var request = &schedulerpb.GetJobRequest{ 281 Name: formattedName, 282 } 283 284 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 285 if err != nil { 286 t.Fatal(err) 287 } 288 289 resp, err := c.GetJob(context.Background(), request) 290 291 if err != nil { 292 t.Fatal(err) 293 } 294 295 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 296 t.Errorf("wrong request %q, want %q", got, want) 297 } 298 299 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 300 t.Errorf("wrong response %q, want %q)", got, want) 301 } 302} 303 304func TestCloudSchedulerGetJobError(t *testing.T) { 305 errCode := codes.PermissionDenied 306 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 307 308 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 309 var request = &schedulerpb.GetJobRequest{ 310 Name: formattedName, 311 } 312 313 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 314 if err != nil { 315 t.Fatal(err) 316 } 317 318 resp, err := c.GetJob(context.Background(), request) 319 320 if st, ok := gstatus.FromError(err); !ok { 321 t.Errorf("got error %v, expected grpc error", err) 322 } else if c := st.Code(); c != errCode { 323 t.Errorf("got error code %q, want %q", c, errCode) 324 } 325 _ = resp 326} 327func TestCloudSchedulerCreateJob(t *testing.T) { 328 var name string = "name3373707" 329 var description string = "description-1724546052" 330 var schedule string = "schedule-697920873" 331 var timeZone string = "timeZone36848094" 332 var expectedResponse = &schedulerpb.Job{ 333 Name: name, 334 Description: description, 335 Schedule: schedule, 336 TimeZone: timeZone, 337 } 338 339 mockCloudScheduler.err = nil 340 mockCloudScheduler.reqs = nil 341 342 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 343 344 var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]") 345 var job *schedulerpb.Job = &schedulerpb.Job{} 346 var request = &schedulerpb.CreateJobRequest{ 347 Parent: formattedParent, 348 Job: job, 349 } 350 351 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 352 if err != nil { 353 t.Fatal(err) 354 } 355 356 resp, err := c.CreateJob(context.Background(), request) 357 358 if err != nil { 359 t.Fatal(err) 360 } 361 362 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 363 t.Errorf("wrong request %q, want %q", got, want) 364 } 365 366 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 367 t.Errorf("wrong response %q, want %q)", got, want) 368 } 369} 370 371func TestCloudSchedulerCreateJobError(t *testing.T) { 372 errCode := codes.PermissionDenied 373 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 374 375 var formattedParent string = fmt.Sprintf("projects/%s/locations/%s", "[PROJECT]", "[LOCATION]") 376 var job *schedulerpb.Job = &schedulerpb.Job{} 377 var request = &schedulerpb.CreateJobRequest{ 378 Parent: formattedParent, 379 Job: job, 380 } 381 382 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 383 if err != nil { 384 t.Fatal(err) 385 } 386 387 resp, err := c.CreateJob(context.Background(), request) 388 389 if st, ok := gstatus.FromError(err); !ok { 390 t.Errorf("got error %v, expected grpc error", err) 391 } else if c := st.Code(); c != errCode { 392 t.Errorf("got error code %q, want %q", c, errCode) 393 } 394 _ = resp 395} 396func TestCloudSchedulerUpdateJob(t *testing.T) { 397 var name string = "name3373707" 398 var description string = "description-1724546052" 399 var schedule string = "schedule-697920873" 400 var timeZone string = "timeZone36848094" 401 var expectedResponse = &schedulerpb.Job{ 402 Name: name, 403 Description: description, 404 Schedule: schedule, 405 TimeZone: timeZone, 406 } 407 408 mockCloudScheduler.err = nil 409 mockCloudScheduler.reqs = nil 410 411 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 412 413 var job *schedulerpb.Job = &schedulerpb.Job{} 414 var updateMask *field_maskpb.FieldMask = &field_maskpb.FieldMask{} 415 var request = &schedulerpb.UpdateJobRequest{ 416 Job: job, 417 UpdateMask: updateMask, 418 } 419 420 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 421 if err != nil { 422 t.Fatal(err) 423 } 424 425 resp, err := c.UpdateJob(context.Background(), request) 426 427 if err != nil { 428 t.Fatal(err) 429 } 430 431 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 432 t.Errorf("wrong request %q, want %q", got, want) 433 } 434 435 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 436 t.Errorf("wrong response %q, want %q)", got, want) 437 } 438} 439 440func TestCloudSchedulerUpdateJobError(t *testing.T) { 441 errCode := codes.PermissionDenied 442 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 443 444 var job *schedulerpb.Job = &schedulerpb.Job{} 445 var updateMask *field_maskpb.FieldMask = &field_maskpb.FieldMask{} 446 var request = &schedulerpb.UpdateJobRequest{ 447 Job: job, 448 UpdateMask: updateMask, 449 } 450 451 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 452 if err != nil { 453 t.Fatal(err) 454 } 455 456 resp, err := c.UpdateJob(context.Background(), request) 457 458 if st, ok := gstatus.FromError(err); !ok { 459 t.Errorf("got error %v, expected grpc error", err) 460 } else if c := st.Code(); c != errCode { 461 t.Errorf("got error code %q, want %q", c, errCode) 462 } 463 _ = resp 464} 465func TestCloudSchedulerDeleteJob(t *testing.T) { 466 var expectedResponse *emptypb.Empty = &emptypb.Empty{} 467 468 mockCloudScheduler.err = nil 469 mockCloudScheduler.reqs = nil 470 471 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 472 473 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 474 var request = &schedulerpb.DeleteJobRequest{ 475 Name: formattedName, 476 } 477 478 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 479 if err != nil { 480 t.Fatal(err) 481 } 482 483 err = c.DeleteJob(context.Background(), request) 484 485 if err != nil { 486 t.Fatal(err) 487 } 488 489 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 490 t.Errorf("wrong request %q, want %q", got, want) 491 } 492 493} 494 495func TestCloudSchedulerDeleteJobError(t *testing.T) { 496 errCode := codes.PermissionDenied 497 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 498 499 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 500 var request = &schedulerpb.DeleteJobRequest{ 501 Name: formattedName, 502 } 503 504 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 505 if err != nil { 506 t.Fatal(err) 507 } 508 509 err = c.DeleteJob(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} 517func TestCloudSchedulerPauseJob(t *testing.T) { 518 var name2 string = "name2-1052831874" 519 var description string = "description-1724546052" 520 var schedule string = "schedule-697920873" 521 var timeZone string = "timeZone36848094" 522 var expectedResponse = &schedulerpb.Job{ 523 Name: name2, 524 Description: description, 525 Schedule: schedule, 526 TimeZone: timeZone, 527 } 528 529 mockCloudScheduler.err = nil 530 mockCloudScheduler.reqs = nil 531 532 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 533 534 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 535 var request = &schedulerpb.PauseJobRequest{ 536 Name: formattedName, 537 } 538 539 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 540 if err != nil { 541 t.Fatal(err) 542 } 543 544 resp, err := c.PauseJob(context.Background(), request) 545 546 if err != nil { 547 t.Fatal(err) 548 } 549 550 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 551 t.Errorf("wrong request %q, want %q", got, want) 552 } 553 554 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 555 t.Errorf("wrong response %q, want %q)", got, want) 556 } 557} 558 559func TestCloudSchedulerPauseJobError(t *testing.T) { 560 errCode := codes.PermissionDenied 561 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 562 563 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 564 var request = &schedulerpb.PauseJobRequest{ 565 Name: formattedName, 566 } 567 568 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 569 if err != nil { 570 t.Fatal(err) 571 } 572 573 resp, err := c.PauseJob(context.Background(), request) 574 575 if st, ok := gstatus.FromError(err); !ok { 576 t.Errorf("got error %v, expected grpc error", err) 577 } else if c := st.Code(); c != errCode { 578 t.Errorf("got error code %q, want %q", c, errCode) 579 } 580 _ = resp 581} 582func TestCloudSchedulerResumeJob(t *testing.T) { 583 var name2 string = "name2-1052831874" 584 var description string = "description-1724546052" 585 var schedule string = "schedule-697920873" 586 var timeZone string = "timeZone36848094" 587 var expectedResponse = &schedulerpb.Job{ 588 Name: name2, 589 Description: description, 590 Schedule: schedule, 591 TimeZone: timeZone, 592 } 593 594 mockCloudScheduler.err = nil 595 mockCloudScheduler.reqs = nil 596 597 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 598 599 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 600 var request = &schedulerpb.ResumeJobRequest{ 601 Name: formattedName, 602 } 603 604 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 605 if err != nil { 606 t.Fatal(err) 607 } 608 609 resp, err := c.ResumeJob(context.Background(), request) 610 611 if err != nil { 612 t.Fatal(err) 613 } 614 615 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 616 t.Errorf("wrong request %q, want %q", got, want) 617 } 618 619 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 620 t.Errorf("wrong response %q, want %q)", got, want) 621 } 622} 623 624func TestCloudSchedulerResumeJobError(t *testing.T) { 625 errCode := codes.PermissionDenied 626 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 627 628 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 629 var request = &schedulerpb.ResumeJobRequest{ 630 Name: formattedName, 631 } 632 633 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 634 if err != nil { 635 t.Fatal(err) 636 } 637 638 resp, err := c.ResumeJob(context.Background(), request) 639 640 if st, ok := gstatus.FromError(err); !ok { 641 t.Errorf("got error %v, expected grpc error", err) 642 } else if c := st.Code(); c != errCode { 643 t.Errorf("got error code %q, want %q", c, errCode) 644 } 645 _ = resp 646} 647func TestCloudSchedulerRunJob(t *testing.T) { 648 var name2 string = "name2-1052831874" 649 var description string = "description-1724546052" 650 var schedule string = "schedule-697920873" 651 var timeZone string = "timeZone36848094" 652 var expectedResponse = &schedulerpb.Job{ 653 Name: name2, 654 Description: description, 655 Schedule: schedule, 656 TimeZone: timeZone, 657 } 658 659 mockCloudScheduler.err = nil 660 mockCloudScheduler.reqs = nil 661 662 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 663 664 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 665 var request = &schedulerpb.RunJobRequest{ 666 Name: formattedName, 667 } 668 669 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 670 if err != nil { 671 t.Fatal(err) 672 } 673 674 resp, err := c.RunJob(context.Background(), request) 675 676 if err != nil { 677 t.Fatal(err) 678 } 679 680 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 681 t.Errorf("wrong request %q, want %q", got, want) 682 } 683 684 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 685 t.Errorf("wrong response %q, want %q)", got, want) 686 } 687} 688 689func TestCloudSchedulerRunJobError(t *testing.T) { 690 errCode := codes.PermissionDenied 691 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 692 693 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 694 var request = &schedulerpb.RunJobRequest{ 695 Name: formattedName, 696 } 697 698 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 699 if err != nil { 700 t.Fatal(err) 701 } 702 703 resp, err := c.RunJob(context.Background(), request) 704 705 if st, ok := gstatus.FromError(err); !ok { 706 t.Errorf("got error %v, expected grpc error", err) 707 } else if c := st.Code(); c != errCode { 708 t.Errorf("got error code %q, want %q", c, errCode) 709 } 710 _ = resp 711} 712