1 /* 2 * Copyright 2022 Google LLC 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.cloud.aiplatform.v1beta1; 18 19 import static com.google.cloud.aiplatform.v1beta1.MigrationServiceClient.ListLocationsPagedResponse; 20 import static com.google.cloud.aiplatform.v1beta1.MigrationServiceClient.SearchMigratableResourcesPagedResponse; 21 22 import com.google.api.gax.core.NoCredentialsProvider; 23 import com.google.api.gax.grpc.GaxGrpcProperties; 24 import com.google.api.gax.grpc.testing.LocalChannelProvider; 25 import com.google.api.gax.grpc.testing.MockGrpcService; 26 import com.google.api.gax.grpc.testing.MockServiceHelper; 27 import com.google.api.gax.rpc.ApiClientHeaderProvider; 28 import com.google.api.gax.rpc.InvalidArgumentException; 29 import com.google.api.gax.rpc.StatusCode; 30 import com.google.cloud.location.GetLocationRequest; 31 import com.google.cloud.location.ListLocationsRequest; 32 import com.google.cloud.location.ListLocationsResponse; 33 import com.google.cloud.location.Location; 34 import com.google.common.collect.Lists; 35 import com.google.iam.v1.AuditConfig; 36 import com.google.iam.v1.Binding; 37 import com.google.iam.v1.GetIamPolicyRequest; 38 import com.google.iam.v1.GetPolicyOptions; 39 import com.google.iam.v1.Policy; 40 import com.google.iam.v1.SetIamPolicyRequest; 41 import com.google.iam.v1.TestIamPermissionsRequest; 42 import com.google.iam.v1.TestIamPermissionsResponse; 43 import com.google.longrunning.Operation; 44 import com.google.protobuf.AbstractMessage; 45 import com.google.protobuf.Any; 46 import com.google.protobuf.ByteString; 47 import com.google.protobuf.FieldMask; 48 import io.grpc.StatusRuntimeException; 49 import java.io.IOException; 50 import java.util.ArrayList; 51 import java.util.Arrays; 52 import java.util.HashMap; 53 import java.util.List; 54 import java.util.UUID; 55 import java.util.concurrent.ExecutionException; 56 import javax.annotation.Generated; 57 import org.junit.After; 58 import org.junit.AfterClass; 59 import org.junit.Assert; 60 import org.junit.Before; 61 import org.junit.BeforeClass; 62 import org.junit.Test; 63 64 @Generated("by gapic-generator-java") 65 public class MigrationServiceClientTest { 66 private static MockIAMPolicy mockIAMPolicy; 67 private static MockLocations mockLocations; 68 private static MockMigrationService mockMigrationService; 69 private static MockServiceHelper mockServiceHelper; 70 private LocalChannelProvider channelProvider; 71 private MigrationServiceClient client; 72 73 @BeforeClass startStaticServer()74 public static void startStaticServer() { 75 mockMigrationService = new MockMigrationService(); 76 mockLocations = new MockLocations(); 77 mockIAMPolicy = new MockIAMPolicy(); 78 mockServiceHelper = 79 new MockServiceHelper( 80 UUID.randomUUID().toString(), 81 Arrays.<MockGrpcService>asList(mockMigrationService, mockLocations, mockIAMPolicy)); 82 mockServiceHelper.start(); 83 } 84 85 @AfterClass stopServer()86 public static void stopServer() { 87 mockServiceHelper.stop(); 88 } 89 90 @Before setUp()91 public void setUp() throws IOException { 92 mockServiceHelper.reset(); 93 channelProvider = mockServiceHelper.createChannelProvider(); 94 MigrationServiceSettings settings = 95 MigrationServiceSettings.newBuilder() 96 .setTransportChannelProvider(channelProvider) 97 .setCredentialsProvider(NoCredentialsProvider.create()) 98 .build(); 99 client = MigrationServiceClient.create(settings); 100 } 101 102 @After tearDown()103 public void tearDown() throws Exception { 104 client.close(); 105 } 106 107 @Test searchMigratableResourcesTest()108 public void searchMigratableResourcesTest() throws Exception { 109 MigratableResource responsesElement = MigratableResource.newBuilder().build(); 110 SearchMigratableResourcesResponse expectedResponse = 111 SearchMigratableResourcesResponse.newBuilder() 112 .setNextPageToken("") 113 .addAllMigratableResources(Arrays.asList(responsesElement)) 114 .build(); 115 mockMigrationService.addResponse(expectedResponse); 116 117 LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); 118 119 SearchMigratableResourcesPagedResponse pagedListResponse = 120 client.searchMigratableResources(parent); 121 122 List<MigratableResource> resources = Lists.newArrayList(pagedListResponse.iterateAll()); 123 124 Assert.assertEquals(1, resources.size()); 125 Assert.assertEquals(expectedResponse.getMigratableResourcesList().get(0), resources.get(0)); 126 127 List<AbstractMessage> actualRequests = mockMigrationService.getRequests(); 128 Assert.assertEquals(1, actualRequests.size()); 129 SearchMigratableResourcesRequest actualRequest = 130 ((SearchMigratableResourcesRequest) actualRequests.get(0)); 131 132 Assert.assertEquals(parent.toString(), actualRequest.getParent()); 133 Assert.assertTrue( 134 channelProvider.isHeaderSent( 135 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 136 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 137 } 138 139 @Test searchMigratableResourcesExceptionTest()140 public void searchMigratableResourcesExceptionTest() throws Exception { 141 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 142 mockMigrationService.addException(exception); 143 144 try { 145 LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); 146 client.searchMigratableResources(parent); 147 Assert.fail("No exception raised"); 148 } catch (InvalidArgumentException e) { 149 // Expected exception. 150 } 151 } 152 153 @Test searchMigratableResourcesTest2()154 public void searchMigratableResourcesTest2() throws Exception { 155 MigratableResource responsesElement = MigratableResource.newBuilder().build(); 156 SearchMigratableResourcesResponse expectedResponse = 157 SearchMigratableResourcesResponse.newBuilder() 158 .setNextPageToken("") 159 .addAllMigratableResources(Arrays.asList(responsesElement)) 160 .build(); 161 mockMigrationService.addResponse(expectedResponse); 162 163 String parent = "parent-995424086"; 164 165 SearchMigratableResourcesPagedResponse pagedListResponse = 166 client.searchMigratableResources(parent); 167 168 List<MigratableResource> resources = Lists.newArrayList(pagedListResponse.iterateAll()); 169 170 Assert.assertEquals(1, resources.size()); 171 Assert.assertEquals(expectedResponse.getMigratableResourcesList().get(0), resources.get(0)); 172 173 List<AbstractMessage> actualRequests = mockMigrationService.getRequests(); 174 Assert.assertEquals(1, actualRequests.size()); 175 SearchMigratableResourcesRequest actualRequest = 176 ((SearchMigratableResourcesRequest) actualRequests.get(0)); 177 178 Assert.assertEquals(parent, actualRequest.getParent()); 179 Assert.assertTrue( 180 channelProvider.isHeaderSent( 181 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 182 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 183 } 184 185 @Test searchMigratableResourcesExceptionTest2()186 public void searchMigratableResourcesExceptionTest2() throws Exception { 187 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 188 mockMigrationService.addException(exception); 189 190 try { 191 String parent = "parent-995424086"; 192 client.searchMigratableResources(parent); 193 Assert.fail("No exception raised"); 194 } catch (InvalidArgumentException e) { 195 // Expected exception. 196 } 197 } 198 199 @Test batchMigrateResourcesTest()200 public void batchMigrateResourcesTest() throws Exception { 201 BatchMigrateResourcesResponse expectedResponse = 202 BatchMigrateResourcesResponse.newBuilder() 203 .addAllMigrateResourceResponses(new ArrayList<MigrateResourceResponse>()) 204 .build(); 205 Operation resultOperation = 206 Operation.newBuilder() 207 .setName("batchMigrateResourcesTest") 208 .setDone(true) 209 .setResponse(Any.pack(expectedResponse)) 210 .build(); 211 mockMigrationService.addResponse(resultOperation); 212 213 LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); 214 List<MigrateResourceRequest> migrateResourceRequests = new ArrayList<>(); 215 216 BatchMigrateResourcesResponse actualResponse = 217 client.batchMigrateResourcesAsync(parent, migrateResourceRequests).get(); 218 Assert.assertEquals(expectedResponse, actualResponse); 219 220 List<AbstractMessage> actualRequests = mockMigrationService.getRequests(); 221 Assert.assertEquals(1, actualRequests.size()); 222 BatchMigrateResourcesRequest actualRequest = 223 ((BatchMigrateResourcesRequest) actualRequests.get(0)); 224 225 Assert.assertEquals(parent.toString(), actualRequest.getParent()); 226 Assert.assertEquals(migrateResourceRequests, actualRequest.getMigrateResourceRequestsList()); 227 Assert.assertTrue( 228 channelProvider.isHeaderSent( 229 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 230 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 231 } 232 233 @Test batchMigrateResourcesExceptionTest()234 public void batchMigrateResourcesExceptionTest() throws Exception { 235 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 236 mockMigrationService.addException(exception); 237 238 try { 239 LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); 240 List<MigrateResourceRequest> migrateResourceRequests = new ArrayList<>(); 241 client.batchMigrateResourcesAsync(parent, migrateResourceRequests).get(); 242 Assert.fail("No exception raised"); 243 } catch (ExecutionException e) { 244 Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); 245 InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); 246 Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); 247 } 248 } 249 250 @Test batchMigrateResourcesTest2()251 public void batchMigrateResourcesTest2() throws Exception { 252 BatchMigrateResourcesResponse expectedResponse = 253 BatchMigrateResourcesResponse.newBuilder() 254 .addAllMigrateResourceResponses(new ArrayList<MigrateResourceResponse>()) 255 .build(); 256 Operation resultOperation = 257 Operation.newBuilder() 258 .setName("batchMigrateResourcesTest") 259 .setDone(true) 260 .setResponse(Any.pack(expectedResponse)) 261 .build(); 262 mockMigrationService.addResponse(resultOperation); 263 264 String parent = "parent-995424086"; 265 List<MigrateResourceRequest> migrateResourceRequests = new ArrayList<>(); 266 267 BatchMigrateResourcesResponse actualResponse = 268 client.batchMigrateResourcesAsync(parent, migrateResourceRequests).get(); 269 Assert.assertEquals(expectedResponse, actualResponse); 270 271 List<AbstractMessage> actualRequests = mockMigrationService.getRequests(); 272 Assert.assertEquals(1, actualRequests.size()); 273 BatchMigrateResourcesRequest actualRequest = 274 ((BatchMigrateResourcesRequest) actualRequests.get(0)); 275 276 Assert.assertEquals(parent, actualRequest.getParent()); 277 Assert.assertEquals(migrateResourceRequests, actualRequest.getMigrateResourceRequestsList()); 278 Assert.assertTrue( 279 channelProvider.isHeaderSent( 280 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 281 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 282 } 283 284 @Test batchMigrateResourcesExceptionTest2()285 public void batchMigrateResourcesExceptionTest2() throws Exception { 286 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 287 mockMigrationService.addException(exception); 288 289 try { 290 String parent = "parent-995424086"; 291 List<MigrateResourceRequest> migrateResourceRequests = new ArrayList<>(); 292 client.batchMigrateResourcesAsync(parent, migrateResourceRequests).get(); 293 Assert.fail("No exception raised"); 294 } catch (ExecutionException e) { 295 Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); 296 InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); 297 Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); 298 } 299 } 300 301 @Test listLocationsTest()302 public void listLocationsTest() throws Exception { 303 Location responsesElement = Location.newBuilder().build(); 304 ListLocationsResponse expectedResponse = 305 ListLocationsResponse.newBuilder() 306 .setNextPageToken("") 307 .addAllLocations(Arrays.asList(responsesElement)) 308 .build(); 309 mockLocations.addResponse(expectedResponse); 310 311 ListLocationsRequest request = 312 ListLocationsRequest.newBuilder() 313 .setName("name3373707") 314 .setFilter("filter-1274492040") 315 .setPageSize(883849137) 316 .setPageToken("pageToken873572522") 317 .build(); 318 319 ListLocationsPagedResponse pagedListResponse = client.listLocations(request); 320 321 List<Location> resources = Lists.newArrayList(pagedListResponse.iterateAll()); 322 323 Assert.assertEquals(1, resources.size()); 324 Assert.assertEquals(expectedResponse.getLocationsList().get(0), resources.get(0)); 325 326 List<AbstractMessage> actualRequests = mockLocations.getRequests(); 327 Assert.assertEquals(1, actualRequests.size()); 328 ListLocationsRequest actualRequest = ((ListLocationsRequest) actualRequests.get(0)); 329 330 Assert.assertEquals(request.getName(), actualRequest.getName()); 331 Assert.assertEquals(request.getFilter(), actualRequest.getFilter()); 332 Assert.assertEquals(request.getPageSize(), actualRequest.getPageSize()); 333 Assert.assertEquals(request.getPageToken(), actualRequest.getPageToken()); 334 Assert.assertTrue( 335 channelProvider.isHeaderSent( 336 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 337 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 338 } 339 340 @Test listLocationsExceptionTest()341 public void listLocationsExceptionTest() throws Exception { 342 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 343 mockLocations.addException(exception); 344 345 try { 346 ListLocationsRequest request = 347 ListLocationsRequest.newBuilder() 348 .setName("name3373707") 349 .setFilter("filter-1274492040") 350 .setPageSize(883849137) 351 .setPageToken("pageToken873572522") 352 .build(); 353 client.listLocations(request); 354 Assert.fail("No exception raised"); 355 } catch (InvalidArgumentException e) { 356 // Expected exception. 357 } 358 } 359 360 @Test getLocationTest()361 public void getLocationTest() throws Exception { 362 Location expectedResponse = 363 Location.newBuilder() 364 .setName("name3373707") 365 .setLocationId("locationId1541836720") 366 .setDisplayName("displayName1714148973") 367 .putAllLabels(new HashMap<String, String>()) 368 .setMetadata(Any.newBuilder().build()) 369 .build(); 370 mockLocations.addResponse(expectedResponse); 371 372 GetLocationRequest request = GetLocationRequest.newBuilder().setName("name3373707").build(); 373 374 Location actualResponse = client.getLocation(request); 375 Assert.assertEquals(expectedResponse, actualResponse); 376 377 List<AbstractMessage> actualRequests = mockLocations.getRequests(); 378 Assert.assertEquals(1, actualRequests.size()); 379 GetLocationRequest actualRequest = ((GetLocationRequest) actualRequests.get(0)); 380 381 Assert.assertEquals(request.getName(), actualRequest.getName()); 382 Assert.assertTrue( 383 channelProvider.isHeaderSent( 384 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 385 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 386 } 387 388 @Test getLocationExceptionTest()389 public void getLocationExceptionTest() throws Exception { 390 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 391 mockLocations.addException(exception); 392 393 try { 394 GetLocationRequest request = GetLocationRequest.newBuilder().setName("name3373707").build(); 395 client.getLocation(request); 396 Assert.fail("No exception raised"); 397 } catch (InvalidArgumentException e) { 398 // Expected exception. 399 } 400 } 401 402 @Test setIamPolicyTest()403 public void setIamPolicyTest() throws Exception { 404 Policy expectedResponse = 405 Policy.newBuilder() 406 .setVersion(351608024) 407 .addAllBindings(new ArrayList<Binding>()) 408 .addAllAuditConfigs(new ArrayList<AuditConfig>()) 409 .setEtag(ByteString.EMPTY) 410 .build(); 411 mockIAMPolicy.addResponse(expectedResponse); 412 413 SetIamPolicyRequest request = 414 SetIamPolicyRequest.newBuilder() 415 .setResource( 416 EndpointName.ofProjectLocationEndpointName("[PROJECT]", "[LOCATION]", "[ENDPOINT]") 417 .toString()) 418 .setPolicy(Policy.newBuilder().build()) 419 .setUpdateMask(FieldMask.newBuilder().build()) 420 .build(); 421 422 Policy actualResponse = client.setIamPolicy(request); 423 Assert.assertEquals(expectedResponse, actualResponse); 424 425 List<AbstractMessage> actualRequests = mockIAMPolicy.getRequests(); 426 Assert.assertEquals(1, actualRequests.size()); 427 SetIamPolicyRequest actualRequest = ((SetIamPolicyRequest) actualRequests.get(0)); 428 429 Assert.assertEquals(request.getResource(), actualRequest.getResource()); 430 Assert.assertEquals(request.getPolicy(), actualRequest.getPolicy()); 431 Assert.assertEquals(request.getUpdateMask(), actualRequest.getUpdateMask()); 432 Assert.assertTrue( 433 channelProvider.isHeaderSent( 434 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 435 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 436 } 437 438 @Test setIamPolicyExceptionTest()439 public void setIamPolicyExceptionTest() throws Exception { 440 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 441 mockIAMPolicy.addException(exception); 442 443 try { 444 SetIamPolicyRequest request = 445 SetIamPolicyRequest.newBuilder() 446 .setResource( 447 EndpointName.ofProjectLocationEndpointName( 448 "[PROJECT]", "[LOCATION]", "[ENDPOINT]") 449 .toString()) 450 .setPolicy(Policy.newBuilder().build()) 451 .setUpdateMask(FieldMask.newBuilder().build()) 452 .build(); 453 client.setIamPolicy(request); 454 Assert.fail("No exception raised"); 455 } catch (InvalidArgumentException e) { 456 // Expected exception. 457 } 458 } 459 460 @Test getIamPolicyTest()461 public void getIamPolicyTest() throws Exception { 462 Policy expectedResponse = 463 Policy.newBuilder() 464 .setVersion(351608024) 465 .addAllBindings(new ArrayList<Binding>()) 466 .addAllAuditConfigs(new ArrayList<AuditConfig>()) 467 .setEtag(ByteString.EMPTY) 468 .build(); 469 mockIAMPolicy.addResponse(expectedResponse); 470 471 GetIamPolicyRequest request = 472 GetIamPolicyRequest.newBuilder() 473 .setResource( 474 EndpointName.ofProjectLocationEndpointName("[PROJECT]", "[LOCATION]", "[ENDPOINT]") 475 .toString()) 476 .setOptions(GetPolicyOptions.newBuilder().build()) 477 .build(); 478 479 Policy actualResponse = client.getIamPolicy(request); 480 Assert.assertEquals(expectedResponse, actualResponse); 481 482 List<AbstractMessage> actualRequests = mockIAMPolicy.getRequests(); 483 Assert.assertEquals(1, actualRequests.size()); 484 GetIamPolicyRequest actualRequest = ((GetIamPolicyRequest) actualRequests.get(0)); 485 486 Assert.assertEquals(request.getResource(), actualRequest.getResource()); 487 Assert.assertEquals(request.getOptions(), actualRequest.getOptions()); 488 Assert.assertTrue( 489 channelProvider.isHeaderSent( 490 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 491 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 492 } 493 494 @Test getIamPolicyExceptionTest()495 public void getIamPolicyExceptionTest() throws Exception { 496 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 497 mockIAMPolicy.addException(exception); 498 499 try { 500 GetIamPolicyRequest request = 501 GetIamPolicyRequest.newBuilder() 502 .setResource( 503 EndpointName.ofProjectLocationEndpointName( 504 "[PROJECT]", "[LOCATION]", "[ENDPOINT]") 505 .toString()) 506 .setOptions(GetPolicyOptions.newBuilder().build()) 507 .build(); 508 client.getIamPolicy(request); 509 Assert.fail("No exception raised"); 510 } catch (InvalidArgumentException e) { 511 // Expected exception. 512 } 513 } 514 515 @Test testIamPermissionsTest()516 public void testIamPermissionsTest() throws Exception { 517 TestIamPermissionsResponse expectedResponse = 518 TestIamPermissionsResponse.newBuilder().addAllPermissions(new ArrayList<String>()).build(); 519 mockIAMPolicy.addResponse(expectedResponse); 520 521 TestIamPermissionsRequest request = 522 TestIamPermissionsRequest.newBuilder() 523 .setResource( 524 EndpointName.ofProjectLocationEndpointName("[PROJECT]", "[LOCATION]", "[ENDPOINT]") 525 .toString()) 526 .addAllPermissions(new ArrayList<String>()) 527 .build(); 528 529 TestIamPermissionsResponse actualResponse = client.testIamPermissions(request); 530 Assert.assertEquals(expectedResponse, actualResponse); 531 532 List<AbstractMessage> actualRequests = mockIAMPolicy.getRequests(); 533 Assert.assertEquals(1, actualRequests.size()); 534 TestIamPermissionsRequest actualRequest = ((TestIamPermissionsRequest) actualRequests.get(0)); 535 536 Assert.assertEquals(request.getResource(), actualRequest.getResource()); 537 Assert.assertEquals(request.getPermissionsList(), actualRequest.getPermissionsList()); 538 Assert.assertTrue( 539 channelProvider.isHeaderSent( 540 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 541 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 542 } 543 544 @Test testIamPermissionsExceptionTest()545 public void testIamPermissionsExceptionTest() throws Exception { 546 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 547 mockIAMPolicy.addException(exception); 548 549 try { 550 TestIamPermissionsRequest request = 551 TestIamPermissionsRequest.newBuilder() 552 .setResource( 553 EndpointName.ofProjectLocationEndpointName( 554 "[PROJECT]", "[LOCATION]", "[ENDPOINT]") 555 .toString()) 556 .addAllPermissions(new ArrayList<String>()) 557 .build(); 558 client.testIamPermissions(request); 559 Assert.fail("No exception raised"); 560 } catch (InvalidArgumentException e) { 561 // Expected exception. 562 } 563 } 564 } 565