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 recommender 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 "google.golang.org/api/option" 33 recommenderpb "google.golang.org/genproto/googleapis/cloud/recommender/v1beta1" 34 35 status "google.golang.org/genproto/googleapis/rpc/status" 36 "google.golang.org/grpc" 37 "google.golang.org/grpc/codes" 38 "google.golang.org/grpc/metadata" 39 40 gstatus "google.golang.org/grpc/status" 41) 42 43var _ = io.EOF 44var _ = ptypes.MarshalAny 45var _ status.Status 46 47type mockRecommenderServer struct { 48 // Embed for forward compatibility. 49 // Tests will keep working if more methods are added 50 // in the future. 51 recommenderpb.RecommenderServer 52 53 reqs []proto.Message 54 55 // If set, all calls return this error. 56 err error 57 58 // responses to return if err == nil 59 resps []proto.Message 60} 61 62func (s *mockRecommenderServer) ListRecommendations(ctx context.Context, req *recommenderpb.ListRecommendationsRequest) (*recommenderpb.ListRecommendationsResponse, error) { 63 md, _ := metadata.FromIncomingContext(ctx) 64 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 65 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 66 } 67 s.reqs = append(s.reqs, req) 68 if s.err != nil { 69 return nil, s.err 70 } 71 return s.resps[0].(*recommenderpb.ListRecommendationsResponse), nil 72} 73 74func (s *mockRecommenderServer) GetRecommendation(ctx context.Context, req *recommenderpb.GetRecommendationRequest) (*recommenderpb.Recommendation, error) { 75 md, _ := metadata.FromIncomingContext(ctx) 76 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 77 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 78 } 79 s.reqs = append(s.reqs, req) 80 if s.err != nil { 81 return nil, s.err 82 } 83 return s.resps[0].(*recommenderpb.Recommendation), nil 84} 85 86func (s *mockRecommenderServer) MarkRecommendationClaimed(ctx context.Context, req *recommenderpb.MarkRecommendationClaimedRequest) (*recommenderpb.Recommendation, error) { 87 md, _ := metadata.FromIncomingContext(ctx) 88 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 89 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 90 } 91 s.reqs = append(s.reqs, req) 92 if s.err != nil { 93 return nil, s.err 94 } 95 return s.resps[0].(*recommenderpb.Recommendation), nil 96} 97 98func (s *mockRecommenderServer) MarkRecommendationSucceeded(ctx context.Context, req *recommenderpb.MarkRecommendationSucceededRequest) (*recommenderpb.Recommendation, error) { 99 md, _ := metadata.FromIncomingContext(ctx) 100 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 101 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 102 } 103 s.reqs = append(s.reqs, req) 104 if s.err != nil { 105 return nil, s.err 106 } 107 return s.resps[0].(*recommenderpb.Recommendation), nil 108} 109 110func (s *mockRecommenderServer) MarkRecommendationFailed(ctx context.Context, req *recommenderpb.MarkRecommendationFailedRequest) (*recommenderpb.Recommendation, error) { 111 md, _ := metadata.FromIncomingContext(ctx) 112 if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") { 113 return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg) 114 } 115 s.reqs = append(s.reqs, req) 116 if s.err != nil { 117 return nil, s.err 118 } 119 return s.resps[0].(*recommenderpb.Recommendation), nil 120} 121 122// clientOpt is the option tests should use to connect to the test server. 123// It is initialized by TestMain. 124var clientOpt option.ClientOption 125 126var ( 127 mockRecommender mockRecommenderServer 128) 129 130func TestMain(m *testing.M) { 131 flag.Parse() 132 133 serv := grpc.NewServer() 134 recommenderpb.RegisterRecommenderServer(serv, &mockRecommender) 135 136 lis, err := net.Listen("tcp", "localhost:0") 137 if err != nil { 138 log.Fatal(err) 139 } 140 go serv.Serve(lis) 141 142 conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure()) 143 if err != nil { 144 log.Fatal(err) 145 } 146 clientOpt = option.WithGRPCConn(conn) 147 148 os.Exit(m.Run()) 149} 150 151func TestRecommenderListRecommendations(t *testing.T) { 152 var nextPageToken string = "" 153 var recommendationsElement *recommenderpb.Recommendation = &recommenderpb.Recommendation{} 154 var recommendations = []*recommenderpb.Recommendation{recommendationsElement} 155 var expectedResponse = &recommenderpb.ListRecommendationsResponse{ 156 NextPageToken: nextPageToken, 157 Recommendations: recommendations, 158 } 159 160 mockRecommender.err = nil 161 mockRecommender.reqs = nil 162 163 mockRecommender.resps = append(mockRecommender.resps[:0], expectedResponse) 164 165 var formattedParent string = fmt.Sprintf("projects/%s/locations/%s/recommenders/%s", "[PROJECT]", "[LOCATION]", "[RECOMMENDER]") 166 var request = &recommenderpb.ListRecommendationsRequest{ 167 Parent: formattedParent, 168 } 169 170 c, err := NewClient(context.Background(), clientOpt) 171 if err != nil { 172 t.Fatal(err) 173 } 174 175 resp, err := c.ListRecommendations(context.Background(), request).Next() 176 177 if err != nil { 178 t.Fatal(err) 179 } 180 181 if want, got := request, mockRecommender.reqs[0]; !proto.Equal(want, got) { 182 t.Errorf("wrong request %q, want %q", got, want) 183 } 184 185 want := (interface{})(expectedResponse.Recommendations[0]) 186 got := (interface{})(resp) 187 var ok bool 188 189 switch want := (want).(type) { 190 case proto.Message: 191 ok = proto.Equal(want, got.(proto.Message)) 192 default: 193 ok = want == got 194 } 195 if !ok { 196 t.Errorf("wrong response %q, want %q)", got, want) 197 } 198} 199 200func TestRecommenderListRecommendationsError(t *testing.T) { 201 errCode := codes.PermissionDenied 202 mockRecommender.err = gstatus.Error(errCode, "test error") 203 204 var formattedParent string = fmt.Sprintf("projects/%s/locations/%s/recommenders/%s", "[PROJECT]", "[LOCATION]", "[RECOMMENDER]") 205 var request = &recommenderpb.ListRecommendationsRequest{ 206 Parent: formattedParent, 207 } 208 209 c, err := NewClient(context.Background(), clientOpt) 210 if err != nil { 211 t.Fatal(err) 212 } 213 214 resp, err := c.ListRecommendations(context.Background(), request).Next() 215 216 if st, ok := gstatus.FromError(err); !ok { 217 t.Errorf("got error %v, expected grpc error", err) 218 } else if c := st.Code(); c != errCode { 219 t.Errorf("got error code %q, want %q", c, errCode) 220 } 221 _ = resp 222} 223func TestRecommenderGetRecommendation(t *testing.T) { 224 var name2 string = "name2-1052831874" 225 var description string = "description-1724546052" 226 var recommenderSubtype string = "recommenderSubtype-1488504412" 227 var etag string = "etag3123477" 228 var expectedResponse = &recommenderpb.Recommendation{ 229 Name: name2, 230 Description: description, 231 RecommenderSubtype: recommenderSubtype, 232 Etag: etag, 233 } 234 235 mockRecommender.err = nil 236 mockRecommender.reqs = nil 237 238 mockRecommender.resps = append(mockRecommender.resps[:0], expectedResponse) 239 240 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/recommenders/%s/recommendations/%s", "[PROJECT]", "[LOCATION]", "[RECOMMENDER]", "[RECOMMENDATION]") 241 var request = &recommenderpb.GetRecommendationRequest{ 242 Name: formattedName, 243 } 244 245 c, err := NewClient(context.Background(), clientOpt) 246 if err != nil { 247 t.Fatal(err) 248 } 249 250 resp, err := c.GetRecommendation(context.Background(), request) 251 252 if err != nil { 253 t.Fatal(err) 254 } 255 256 if want, got := request, mockRecommender.reqs[0]; !proto.Equal(want, got) { 257 t.Errorf("wrong request %q, want %q", got, want) 258 } 259 260 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 261 t.Errorf("wrong response %q, want %q)", got, want) 262 } 263} 264 265func TestRecommenderGetRecommendationError(t *testing.T) { 266 errCode := codes.PermissionDenied 267 mockRecommender.err = gstatus.Error(errCode, "test error") 268 269 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/recommenders/%s/recommendations/%s", "[PROJECT]", "[LOCATION]", "[RECOMMENDER]", "[RECOMMENDATION]") 270 var request = &recommenderpb.GetRecommendationRequest{ 271 Name: formattedName, 272 } 273 274 c, err := NewClient(context.Background(), clientOpt) 275 if err != nil { 276 t.Fatal(err) 277 } 278 279 resp, err := c.GetRecommendation(context.Background(), request) 280 281 if st, ok := gstatus.FromError(err); !ok { 282 t.Errorf("got error %v, expected grpc error", err) 283 } else if c := st.Code(); c != errCode { 284 t.Errorf("got error code %q, want %q", c, errCode) 285 } 286 _ = resp 287} 288func TestRecommenderMarkRecommendationClaimed(t *testing.T) { 289 var name2 string = "name2-1052831874" 290 var description string = "description-1724546052" 291 var recommenderSubtype string = "recommenderSubtype-1488504412" 292 var etag2 string = "etag2-1293302904" 293 var expectedResponse = &recommenderpb.Recommendation{ 294 Name: name2, 295 Description: description, 296 RecommenderSubtype: recommenderSubtype, 297 Etag: etag2, 298 } 299 300 mockRecommender.err = nil 301 mockRecommender.reqs = nil 302 303 mockRecommender.resps = append(mockRecommender.resps[:0], expectedResponse) 304 305 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/recommenders/%s/recommendations/%s", "[PROJECT]", "[LOCATION]", "[RECOMMENDER]", "[RECOMMENDATION]") 306 var etag string = "etag3123477" 307 var request = &recommenderpb.MarkRecommendationClaimedRequest{ 308 Name: formattedName, 309 Etag: etag, 310 } 311 312 c, err := NewClient(context.Background(), clientOpt) 313 if err != nil { 314 t.Fatal(err) 315 } 316 317 resp, err := c.MarkRecommendationClaimed(context.Background(), request) 318 319 if err != nil { 320 t.Fatal(err) 321 } 322 323 if want, got := request, mockRecommender.reqs[0]; !proto.Equal(want, got) { 324 t.Errorf("wrong request %q, want %q", got, want) 325 } 326 327 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 328 t.Errorf("wrong response %q, want %q)", got, want) 329 } 330} 331 332func TestRecommenderMarkRecommendationClaimedError(t *testing.T) { 333 errCode := codes.PermissionDenied 334 mockRecommender.err = gstatus.Error(errCode, "test error") 335 336 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/recommenders/%s/recommendations/%s", "[PROJECT]", "[LOCATION]", "[RECOMMENDER]", "[RECOMMENDATION]") 337 var etag string = "etag3123477" 338 var request = &recommenderpb.MarkRecommendationClaimedRequest{ 339 Name: formattedName, 340 Etag: etag, 341 } 342 343 c, err := NewClient(context.Background(), clientOpt) 344 if err != nil { 345 t.Fatal(err) 346 } 347 348 resp, err := c.MarkRecommendationClaimed(context.Background(), request) 349 350 if st, ok := gstatus.FromError(err); !ok { 351 t.Errorf("got error %v, expected grpc error", err) 352 } else if c := st.Code(); c != errCode { 353 t.Errorf("got error code %q, want %q", c, errCode) 354 } 355 _ = resp 356} 357func TestRecommenderMarkRecommendationSucceeded(t *testing.T) { 358 var name2 string = "name2-1052831874" 359 var description string = "description-1724546052" 360 var recommenderSubtype string = "recommenderSubtype-1488504412" 361 var etag2 string = "etag2-1293302904" 362 var expectedResponse = &recommenderpb.Recommendation{ 363 Name: name2, 364 Description: description, 365 RecommenderSubtype: recommenderSubtype, 366 Etag: etag2, 367 } 368 369 mockRecommender.err = nil 370 mockRecommender.reqs = nil 371 372 mockRecommender.resps = append(mockRecommender.resps[:0], expectedResponse) 373 374 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/recommenders/%s/recommendations/%s", "[PROJECT]", "[LOCATION]", "[RECOMMENDER]", "[RECOMMENDATION]") 375 var etag string = "etag3123477" 376 var request = &recommenderpb.MarkRecommendationSucceededRequest{ 377 Name: formattedName, 378 Etag: etag, 379 } 380 381 c, err := NewClient(context.Background(), clientOpt) 382 if err != nil { 383 t.Fatal(err) 384 } 385 386 resp, err := c.MarkRecommendationSucceeded(context.Background(), request) 387 388 if err != nil { 389 t.Fatal(err) 390 } 391 392 if want, got := request, mockRecommender.reqs[0]; !proto.Equal(want, got) { 393 t.Errorf("wrong request %q, want %q", got, want) 394 } 395 396 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 397 t.Errorf("wrong response %q, want %q)", got, want) 398 } 399} 400 401func TestRecommenderMarkRecommendationSucceededError(t *testing.T) { 402 errCode := codes.PermissionDenied 403 mockRecommender.err = gstatus.Error(errCode, "test error") 404 405 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/recommenders/%s/recommendations/%s", "[PROJECT]", "[LOCATION]", "[RECOMMENDER]", "[RECOMMENDATION]") 406 var etag string = "etag3123477" 407 var request = &recommenderpb.MarkRecommendationSucceededRequest{ 408 Name: formattedName, 409 Etag: etag, 410 } 411 412 c, err := NewClient(context.Background(), clientOpt) 413 if err != nil { 414 t.Fatal(err) 415 } 416 417 resp, err := c.MarkRecommendationSucceeded(context.Background(), request) 418 419 if st, ok := gstatus.FromError(err); !ok { 420 t.Errorf("got error %v, expected grpc error", err) 421 } else if c := st.Code(); c != errCode { 422 t.Errorf("got error code %q, want %q", c, errCode) 423 } 424 _ = resp 425} 426func TestRecommenderMarkRecommendationFailed(t *testing.T) { 427 var name2 string = "name2-1052831874" 428 var description string = "description-1724546052" 429 var recommenderSubtype string = "recommenderSubtype-1488504412" 430 var etag2 string = "etag2-1293302904" 431 var expectedResponse = &recommenderpb.Recommendation{ 432 Name: name2, 433 Description: description, 434 RecommenderSubtype: recommenderSubtype, 435 Etag: etag2, 436 } 437 438 mockRecommender.err = nil 439 mockRecommender.reqs = nil 440 441 mockRecommender.resps = append(mockRecommender.resps[:0], expectedResponse) 442 443 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/recommenders/%s/recommendations/%s", "[PROJECT]", "[LOCATION]", "[RECOMMENDER]", "[RECOMMENDATION]") 444 var etag string = "etag3123477" 445 var request = &recommenderpb.MarkRecommendationFailedRequest{ 446 Name: formattedName, 447 Etag: etag, 448 } 449 450 c, err := NewClient(context.Background(), clientOpt) 451 if err != nil { 452 t.Fatal(err) 453 } 454 455 resp, err := c.MarkRecommendationFailed(context.Background(), request) 456 457 if err != nil { 458 t.Fatal(err) 459 } 460 461 if want, got := request, mockRecommender.reqs[0]; !proto.Equal(want, got) { 462 t.Errorf("wrong request %q, want %q", got, want) 463 } 464 465 if want, got := expectedResponse, resp; !proto.Equal(want, got) { 466 t.Errorf("wrong response %q, want %q)", got, want) 467 } 468} 469 470func TestRecommenderMarkRecommendationFailedError(t *testing.T) { 471 errCode := codes.PermissionDenied 472 mockRecommender.err = gstatus.Error(errCode, "test error") 473 474 var formattedName string = fmt.Sprintf("projects/%s/locations/%s/recommenders/%s/recommendations/%s", "[PROJECT]", "[LOCATION]", "[RECOMMENDER]", "[RECOMMENDATION]") 475 var etag string = "etag3123477" 476 var request = &recommenderpb.MarkRecommendationFailedRequest{ 477 Name: formattedName, 478 Etag: etag, 479 } 480 481 c, err := NewClient(context.Background(), clientOpt) 482 if err != nil { 483 t.Fatal(err) 484 } 485 486 resp, err := c.MarkRecommendationFailed(context.Background(), request) 487 488 if st, ok := gstatus.FromError(err); !ok { 489 t.Errorf("got error %v, expected grpc error", err) 490 } else if c := st.Code(); c != errCode { 491 t.Errorf("got error code %q, want %q", c, errCode) 492 } 493 _ = resp 494} 495