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