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 "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 schedulerpb "google.golang.org/genproto/googleapis/cloud/scheduler/v1" 35 field_maskpb "google.golang.org/genproto/protobuf/field_mask" 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 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 updateMask *field_maskpb.FieldMask = &field_maskpb.FieldMask{} 414 var request = &schedulerpb.UpdateJobRequest{ 415 Job: job, 416 UpdateMask: updateMask, 417 } 418 419 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 420 if err != nil { 421 t.Fatal(err) 422 } 423 424 resp, err := c.UpdateJob(context.Background(), request) 425 426 if err != nil { 427 t.Fatal(err) 428 } 429 430 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 431 t.Errorf("wrong request %q, want %q", got, want) 432 } 433 434 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 435 t.Errorf("wrong response %q, want %q)", got, want) 436 } 437} 438 439func TestCloudSchedulerUpdateJobError(t *testing.T) { 440 errCode := codes.PermissionDenied 441 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 442 443 var job *schedulerpb.Job = &schedulerpb.Job{} 444 var updateMask *field_maskpb.FieldMask = &field_maskpb.FieldMask{} 445 var request = &schedulerpb.UpdateJobRequest{ 446 Job: job, 447 UpdateMask: updateMask, 448 } 449 450 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 451 if err != nil { 452 t.Fatal(err) 453 } 454 455 resp, err := c.UpdateJob(context.Background(), request) 456 457 if st, ok := gstatus.FromError(err); !ok { 458 t.Errorf("got error %v, expected grpc error", err) 459 } else if c := st.Code(); c != errCode { 460 t.Errorf("got error code %q, want %q", c, errCode) 461 } 462 _ = resp 463} 464func TestCloudSchedulerDeleteJob(t *testing.T) { 465 var expectedResponse *emptypb.Empty = &emptypb.Empty{} 466 467 mockCloudScheduler.err = nil 468 mockCloudScheduler.reqs = nil 469 470 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 471 472 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 473 var request = &schedulerpb.DeleteJobRequest{ 474 Name: formattedName, 475 } 476 477 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 478 if err != nil { 479 t.Fatal(err) 480 } 481 482 err = c.DeleteJob(context.Background(), request) 483 484 if err != nil { 485 t.Fatal(err) 486 } 487 488 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 489 t.Errorf("wrong request %q, want %q", got, want) 490 } 491 492} 493 494func TestCloudSchedulerDeleteJobError(t *testing.T) { 495 errCode := codes.PermissionDenied 496 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 497 498 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 499 var request = &schedulerpb.DeleteJobRequest{ 500 Name: formattedName, 501 } 502 503 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 504 if err != nil { 505 t.Fatal(err) 506 } 507 508 err = c.DeleteJob(context.Background(), request) 509 510 if st, ok := gstatus.FromError(err); !ok { 511 t.Errorf("got error %v, expected grpc error", err) 512 } else if c := st.Code(); c != errCode { 513 t.Errorf("got error code %q, want %q", c, errCode) 514 } 515} 516func TestCloudSchedulerPauseJob(t *testing.T) { 517 var name2 string = "name2-1052831874" 518 var description string = "description-1724546052" 519 var schedule string = "schedule-697920873" 520 var timeZone string = "timeZone36848094" 521 var expectedResponse = &schedulerpb.Job{ 522 Name: name2, 523 Description: description, 524 Schedule: schedule, 525 TimeZone: timeZone, 526 } 527 528 mockCloudScheduler.err = nil 529 mockCloudScheduler.reqs = nil 530 531 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 532 533 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 534 var request = &schedulerpb.PauseJobRequest{ 535 Name: formattedName, 536 } 537 538 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 539 if err != nil { 540 t.Fatal(err) 541 } 542 543 resp, err := c.PauseJob(context.Background(), request) 544 545 if err != nil { 546 t.Fatal(err) 547 } 548 549 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 550 t.Errorf("wrong request %q, want %q", got, want) 551 } 552 553 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 554 t.Errorf("wrong response %q, want %q)", got, want) 555 } 556} 557 558func TestCloudSchedulerPauseJobError(t *testing.T) { 559 errCode := codes.PermissionDenied 560 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 561 562 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 563 var request = &schedulerpb.PauseJobRequest{ 564 Name: formattedName, 565 } 566 567 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 568 if err != nil { 569 t.Fatal(err) 570 } 571 572 resp, err := c.PauseJob(context.Background(), request) 573 574 if st, ok := gstatus.FromError(err); !ok { 575 t.Errorf("got error %v, expected grpc error", err) 576 } else if c := st.Code(); c != errCode { 577 t.Errorf("got error code %q, want %q", c, errCode) 578 } 579 _ = resp 580} 581func TestCloudSchedulerResumeJob(t *testing.T) { 582 var name2 string = "name2-1052831874" 583 var description string = "description-1724546052" 584 var schedule string = "schedule-697920873" 585 var timeZone string = "timeZone36848094" 586 var expectedResponse = &schedulerpb.Job{ 587 Name: name2, 588 Description: description, 589 Schedule: schedule, 590 TimeZone: timeZone, 591 } 592 593 mockCloudScheduler.err = nil 594 mockCloudScheduler.reqs = nil 595 596 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 597 598 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 599 var request = &schedulerpb.ResumeJobRequest{ 600 Name: formattedName, 601 } 602 603 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 604 if err != nil { 605 t.Fatal(err) 606 } 607 608 resp, err := c.ResumeJob(context.Background(), request) 609 610 if err != nil { 611 t.Fatal(err) 612 } 613 614 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 615 t.Errorf("wrong request %q, want %q", got, want) 616 } 617 618 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 619 t.Errorf("wrong response %q, want %q)", got, want) 620 } 621} 622 623func TestCloudSchedulerResumeJobError(t *testing.T) { 624 errCode := codes.PermissionDenied 625 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 626 627 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 628 var request = &schedulerpb.ResumeJobRequest{ 629 Name: formattedName, 630 } 631 632 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 633 if err != nil { 634 t.Fatal(err) 635 } 636 637 resp, err := c.ResumeJob(context.Background(), request) 638 639 if st, ok := gstatus.FromError(err); !ok { 640 t.Errorf("got error %v, expected grpc error", err) 641 } else if c := st.Code(); c != errCode { 642 t.Errorf("got error code %q, want %q", c, errCode) 643 } 644 _ = resp 645} 646func TestCloudSchedulerRunJob(t *testing.T) { 647 var name2 string = "name2-1052831874" 648 var description string = "description-1724546052" 649 var schedule string = "schedule-697920873" 650 var timeZone string = "timeZone36848094" 651 var expectedResponse = &schedulerpb.Job{ 652 Name: name2, 653 Description: description, 654 Schedule: schedule, 655 TimeZone: timeZone, 656 } 657 658 mockCloudScheduler.err = nil 659 mockCloudScheduler.reqs = nil 660 661 mockCloudScheduler.resps = append(mockCloudScheduler.resps[:0], expectedResponse) 662 663 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 664 var request = &schedulerpb.RunJobRequest{ 665 Name: formattedName, 666 } 667 668 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 669 if err != nil { 670 t.Fatal(err) 671 } 672 673 resp, err := c.RunJob(context.Background(), request) 674 675 if err != nil { 676 t.Fatal(err) 677 } 678 679 if want, got := request, mockCloudScheduler.reqs[0]; !proto.Equal(want, got) { 680 t.Errorf("wrong request %q, want %q", got, want) 681 } 682 683 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 684 t.Errorf("wrong response %q, want %q)", got, want) 685 } 686} 687 688func TestCloudSchedulerRunJobError(t *testing.T) { 689 errCode := codes.PermissionDenied 690 mockCloudScheduler.err = gstatus.Error(errCode, "test error") 691 692 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/jobs/%s", "[PROJECT]", "[LOCATION]", "[JOB]") 693 var request = &schedulerpb.RunJobRequest{ 694 Name: formattedName, 695 } 696 697 c, err := NewCloudSchedulerClient(context.Background(), clientOpt) 698 if err != nil { 699 t.Fatal(err) 700 } 701 702 resp, err := c.RunJob(context.Background(), request) 703 704 if st, ok := gstatus.FromError(err); !ok { 705 t.Errorf("got error %v, expected grpc error", err) 706 } else if c := st.Code(); c != errCode { 707 t.Errorf("got error code %q, want %q", c, errCode) 708 } 709 _ = resp 710} 711