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