• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.functions.v2beta;
18 
19 import static com.google.cloud.functions.v2beta.FunctionServiceClient.ListFunctionsPagedResponse;
20 import static com.google.cloud.functions.v2beta.FunctionServiceClient.ListLocationsPagedResponse;
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.ListLocationsRequest;
31 import com.google.cloud.location.ListLocationsResponse;
32 import com.google.cloud.location.Location;
33 import com.google.common.collect.Lists;
34 import com.google.iam.v1.AuditConfig;
35 import com.google.iam.v1.Binding;
36 import com.google.iam.v1.GetIamPolicyRequest;
37 import com.google.iam.v1.GetPolicyOptions;
38 import com.google.iam.v1.Policy;
39 import com.google.iam.v1.SetIamPolicyRequest;
40 import com.google.iam.v1.TestIamPermissionsRequest;
41 import com.google.iam.v1.TestIamPermissionsResponse;
42 import com.google.longrunning.Operation;
43 import com.google.protobuf.AbstractMessage;
44 import com.google.protobuf.Any;
45 import com.google.protobuf.ByteString;
46 import com.google.protobuf.Empty;
47 import com.google.protobuf.FieldMask;
48 import com.google.protobuf.Timestamp;
49 import io.grpc.StatusRuntimeException;
50 import java.io.IOException;
51 import java.util.ArrayList;
52 import java.util.Arrays;
53 import java.util.HashMap;
54 import java.util.List;
55 import java.util.UUID;
56 import java.util.concurrent.ExecutionException;
57 import javax.annotation.Generated;
58 import org.junit.After;
59 import org.junit.AfterClass;
60 import org.junit.Assert;
61 import org.junit.Before;
62 import org.junit.BeforeClass;
63 import org.junit.Test;
64 
65 @Generated("by gapic-generator-java")
66 public class FunctionServiceClientTest {
67   private static MockFunctionService mockFunctionService;
68   private static MockIAMPolicy mockIAMPolicy;
69   private static MockLocations mockLocations;
70   private static MockServiceHelper mockServiceHelper;
71   private LocalChannelProvider channelProvider;
72   private FunctionServiceClient client;
73 
74   @BeforeClass
startStaticServer()75   public static void startStaticServer() {
76     mockFunctionService = new MockFunctionService();
77     mockLocations = new MockLocations();
78     mockIAMPolicy = new MockIAMPolicy();
79     mockServiceHelper =
80         new MockServiceHelper(
81             UUID.randomUUID().toString(),
82             Arrays.<MockGrpcService>asList(mockFunctionService, mockLocations, mockIAMPolicy));
83     mockServiceHelper.start();
84   }
85 
86   @AfterClass
stopServer()87   public static void stopServer() {
88     mockServiceHelper.stop();
89   }
90 
91   @Before
setUp()92   public void setUp() throws IOException {
93     mockServiceHelper.reset();
94     channelProvider = mockServiceHelper.createChannelProvider();
95     FunctionServiceSettings settings =
96         FunctionServiceSettings.newBuilder()
97             .setTransportChannelProvider(channelProvider)
98             .setCredentialsProvider(NoCredentialsProvider.create())
99             .build();
100     client = FunctionServiceClient.create(settings);
101   }
102 
103   @After
tearDown()104   public void tearDown() throws Exception {
105     client.close();
106   }
107 
108   @Test
getFunctionTest()109   public void getFunctionTest() throws Exception {
110     Function expectedResponse =
111         Function.newBuilder()
112             .setName(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
113             .setEnvironment(Environment.forNumber(0))
114             .setDescription("description-1724546052")
115             .setBuildConfig(BuildConfig.newBuilder().build())
116             .setServiceConfig(ServiceConfig.newBuilder().build())
117             .setEventTrigger(EventTrigger.newBuilder().build())
118             .setUpdateTime(Timestamp.newBuilder().build())
119             .putAllLabels(new HashMap<String, String>())
120             .addAllStateMessages(new ArrayList<StateMessage>())
121             .build();
122     mockFunctionService.addResponse(expectedResponse);
123 
124     FunctionName name = FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]");
125 
126     Function actualResponse = client.getFunction(name);
127     Assert.assertEquals(expectedResponse, actualResponse);
128 
129     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
130     Assert.assertEquals(1, actualRequests.size());
131     GetFunctionRequest actualRequest = ((GetFunctionRequest) actualRequests.get(0));
132 
133     Assert.assertEquals(name.toString(), actualRequest.getName());
134     Assert.assertTrue(
135         channelProvider.isHeaderSent(
136             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
137             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
138   }
139 
140   @Test
getFunctionExceptionTest()141   public void getFunctionExceptionTest() throws Exception {
142     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
143     mockFunctionService.addException(exception);
144 
145     try {
146       FunctionName name = FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]");
147       client.getFunction(name);
148       Assert.fail("No exception raised");
149     } catch (InvalidArgumentException e) {
150       // Expected exception.
151     }
152   }
153 
154   @Test
getFunctionTest2()155   public void getFunctionTest2() throws Exception {
156     Function expectedResponse =
157         Function.newBuilder()
158             .setName(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
159             .setEnvironment(Environment.forNumber(0))
160             .setDescription("description-1724546052")
161             .setBuildConfig(BuildConfig.newBuilder().build())
162             .setServiceConfig(ServiceConfig.newBuilder().build())
163             .setEventTrigger(EventTrigger.newBuilder().build())
164             .setUpdateTime(Timestamp.newBuilder().build())
165             .putAllLabels(new HashMap<String, String>())
166             .addAllStateMessages(new ArrayList<StateMessage>())
167             .build();
168     mockFunctionService.addResponse(expectedResponse);
169 
170     String name = "name3373707";
171 
172     Function actualResponse = client.getFunction(name);
173     Assert.assertEquals(expectedResponse, actualResponse);
174 
175     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
176     Assert.assertEquals(1, actualRequests.size());
177     GetFunctionRequest actualRequest = ((GetFunctionRequest) actualRequests.get(0));
178 
179     Assert.assertEquals(name, actualRequest.getName());
180     Assert.assertTrue(
181         channelProvider.isHeaderSent(
182             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
183             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
184   }
185 
186   @Test
getFunctionExceptionTest2()187   public void getFunctionExceptionTest2() throws Exception {
188     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
189     mockFunctionService.addException(exception);
190 
191     try {
192       String name = "name3373707";
193       client.getFunction(name);
194       Assert.fail("No exception raised");
195     } catch (InvalidArgumentException e) {
196       // Expected exception.
197     }
198   }
199 
200   @Test
listFunctionsTest()201   public void listFunctionsTest() throws Exception {
202     Function responsesElement = Function.newBuilder().build();
203     ListFunctionsResponse expectedResponse =
204         ListFunctionsResponse.newBuilder()
205             .setNextPageToken("")
206             .addAllFunctions(Arrays.asList(responsesElement))
207             .build();
208     mockFunctionService.addResponse(expectedResponse);
209 
210     LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
211 
212     ListFunctionsPagedResponse pagedListResponse = client.listFunctions(parent);
213 
214     List<Function> resources = Lists.newArrayList(pagedListResponse.iterateAll());
215 
216     Assert.assertEquals(1, resources.size());
217     Assert.assertEquals(expectedResponse.getFunctionsList().get(0), resources.get(0));
218 
219     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
220     Assert.assertEquals(1, actualRequests.size());
221     ListFunctionsRequest actualRequest = ((ListFunctionsRequest) actualRequests.get(0));
222 
223     Assert.assertEquals(parent.toString(), actualRequest.getParent());
224     Assert.assertTrue(
225         channelProvider.isHeaderSent(
226             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
227             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
228   }
229 
230   @Test
listFunctionsExceptionTest()231   public void listFunctionsExceptionTest() throws Exception {
232     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
233     mockFunctionService.addException(exception);
234 
235     try {
236       LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
237       client.listFunctions(parent);
238       Assert.fail("No exception raised");
239     } catch (InvalidArgumentException e) {
240       // Expected exception.
241     }
242   }
243 
244   @Test
listFunctionsTest2()245   public void listFunctionsTest2() throws Exception {
246     Function responsesElement = Function.newBuilder().build();
247     ListFunctionsResponse expectedResponse =
248         ListFunctionsResponse.newBuilder()
249             .setNextPageToken("")
250             .addAllFunctions(Arrays.asList(responsesElement))
251             .build();
252     mockFunctionService.addResponse(expectedResponse);
253 
254     String parent = "parent-995424086";
255 
256     ListFunctionsPagedResponse pagedListResponse = client.listFunctions(parent);
257 
258     List<Function> resources = Lists.newArrayList(pagedListResponse.iterateAll());
259 
260     Assert.assertEquals(1, resources.size());
261     Assert.assertEquals(expectedResponse.getFunctionsList().get(0), resources.get(0));
262 
263     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
264     Assert.assertEquals(1, actualRequests.size());
265     ListFunctionsRequest actualRequest = ((ListFunctionsRequest) actualRequests.get(0));
266 
267     Assert.assertEquals(parent, actualRequest.getParent());
268     Assert.assertTrue(
269         channelProvider.isHeaderSent(
270             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
271             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
272   }
273 
274   @Test
listFunctionsExceptionTest2()275   public void listFunctionsExceptionTest2() throws Exception {
276     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
277     mockFunctionService.addException(exception);
278 
279     try {
280       String parent = "parent-995424086";
281       client.listFunctions(parent);
282       Assert.fail("No exception raised");
283     } catch (InvalidArgumentException e) {
284       // Expected exception.
285     }
286   }
287 
288   @Test
createFunctionTest()289   public void createFunctionTest() throws Exception {
290     Function expectedResponse =
291         Function.newBuilder()
292             .setName(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
293             .setEnvironment(Environment.forNumber(0))
294             .setDescription("description-1724546052")
295             .setBuildConfig(BuildConfig.newBuilder().build())
296             .setServiceConfig(ServiceConfig.newBuilder().build())
297             .setEventTrigger(EventTrigger.newBuilder().build())
298             .setUpdateTime(Timestamp.newBuilder().build())
299             .putAllLabels(new HashMap<String, String>())
300             .addAllStateMessages(new ArrayList<StateMessage>())
301             .build();
302     Operation resultOperation =
303         Operation.newBuilder()
304             .setName("createFunctionTest")
305             .setDone(true)
306             .setResponse(Any.pack(expectedResponse))
307             .build();
308     mockFunctionService.addResponse(resultOperation);
309 
310     LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
311     Function function = Function.newBuilder().build();
312     String functionId = "functionId-62789869";
313 
314     Function actualResponse = client.createFunctionAsync(parent, function, functionId).get();
315     Assert.assertEquals(expectedResponse, actualResponse);
316 
317     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
318     Assert.assertEquals(1, actualRequests.size());
319     CreateFunctionRequest actualRequest = ((CreateFunctionRequest) actualRequests.get(0));
320 
321     Assert.assertEquals(parent.toString(), actualRequest.getParent());
322     Assert.assertEquals(function, actualRequest.getFunction());
323     Assert.assertEquals(functionId, actualRequest.getFunctionId());
324     Assert.assertTrue(
325         channelProvider.isHeaderSent(
326             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
327             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
328   }
329 
330   @Test
createFunctionExceptionTest()331   public void createFunctionExceptionTest() throws Exception {
332     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
333     mockFunctionService.addException(exception);
334 
335     try {
336       LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
337       Function function = Function.newBuilder().build();
338       String functionId = "functionId-62789869";
339       client.createFunctionAsync(parent, function, functionId).get();
340       Assert.fail("No exception raised");
341     } catch (ExecutionException e) {
342       Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
343       InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause());
344       Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
345     }
346   }
347 
348   @Test
createFunctionTest2()349   public void createFunctionTest2() throws Exception {
350     Function expectedResponse =
351         Function.newBuilder()
352             .setName(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
353             .setEnvironment(Environment.forNumber(0))
354             .setDescription("description-1724546052")
355             .setBuildConfig(BuildConfig.newBuilder().build())
356             .setServiceConfig(ServiceConfig.newBuilder().build())
357             .setEventTrigger(EventTrigger.newBuilder().build())
358             .setUpdateTime(Timestamp.newBuilder().build())
359             .putAllLabels(new HashMap<String, String>())
360             .addAllStateMessages(new ArrayList<StateMessage>())
361             .build();
362     Operation resultOperation =
363         Operation.newBuilder()
364             .setName("createFunctionTest")
365             .setDone(true)
366             .setResponse(Any.pack(expectedResponse))
367             .build();
368     mockFunctionService.addResponse(resultOperation);
369 
370     String parent = "parent-995424086";
371     Function function = Function.newBuilder().build();
372     String functionId = "functionId-62789869";
373 
374     Function actualResponse = client.createFunctionAsync(parent, function, functionId).get();
375     Assert.assertEquals(expectedResponse, actualResponse);
376 
377     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
378     Assert.assertEquals(1, actualRequests.size());
379     CreateFunctionRequest actualRequest = ((CreateFunctionRequest) actualRequests.get(0));
380 
381     Assert.assertEquals(parent, actualRequest.getParent());
382     Assert.assertEquals(function, actualRequest.getFunction());
383     Assert.assertEquals(functionId, actualRequest.getFunctionId());
384     Assert.assertTrue(
385         channelProvider.isHeaderSent(
386             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
387             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
388   }
389 
390   @Test
createFunctionExceptionTest2()391   public void createFunctionExceptionTest2() throws Exception {
392     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
393     mockFunctionService.addException(exception);
394 
395     try {
396       String parent = "parent-995424086";
397       Function function = Function.newBuilder().build();
398       String functionId = "functionId-62789869";
399       client.createFunctionAsync(parent, function, functionId).get();
400       Assert.fail("No exception raised");
401     } catch (ExecutionException e) {
402       Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
403       InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause());
404       Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
405     }
406   }
407 
408   @Test
updateFunctionTest()409   public void updateFunctionTest() throws Exception {
410     Function expectedResponse =
411         Function.newBuilder()
412             .setName(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
413             .setEnvironment(Environment.forNumber(0))
414             .setDescription("description-1724546052")
415             .setBuildConfig(BuildConfig.newBuilder().build())
416             .setServiceConfig(ServiceConfig.newBuilder().build())
417             .setEventTrigger(EventTrigger.newBuilder().build())
418             .setUpdateTime(Timestamp.newBuilder().build())
419             .putAllLabels(new HashMap<String, String>())
420             .addAllStateMessages(new ArrayList<StateMessage>())
421             .build();
422     Operation resultOperation =
423         Operation.newBuilder()
424             .setName("updateFunctionTest")
425             .setDone(true)
426             .setResponse(Any.pack(expectedResponse))
427             .build();
428     mockFunctionService.addResponse(resultOperation);
429 
430     Function function = Function.newBuilder().build();
431     FieldMask updateMask = FieldMask.newBuilder().build();
432 
433     Function actualResponse = client.updateFunctionAsync(function, updateMask).get();
434     Assert.assertEquals(expectedResponse, actualResponse);
435 
436     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
437     Assert.assertEquals(1, actualRequests.size());
438     UpdateFunctionRequest actualRequest = ((UpdateFunctionRequest) actualRequests.get(0));
439 
440     Assert.assertEquals(function, actualRequest.getFunction());
441     Assert.assertEquals(updateMask, actualRequest.getUpdateMask());
442     Assert.assertTrue(
443         channelProvider.isHeaderSent(
444             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
445             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
446   }
447 
448   @Test
updateFunctionExceptionTest()449   public void updateFunctionExceptionTest() throws Exception {
450     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
451     mockFunctionService.addException(exception);
452 
453     try {
454       Function function = Function.newBuilder().build();
455       FieldMask updateMask = FieldMask.newBuilder().build();
456       client.updateFunctionAsync(function, updateMask).get();
457       Assert.fail("No exception raised");
458     } catch (ExecutionException e) {
459       Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
460       InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause());
461       Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
462     }
463   }
464 
465   @Test
deleteFunctionTest()466   public void deleteFunctionTest() throws Exception {
467     Empty expectedResponse = Empty.newBuilder().build();
468     Operation resultOperation =
469         Operation.newBuilder()
470             .setName("deleteFunctionTest")
471             .setDone(true)
472             .setResponse(Any.pack(expectedResponse))
473             .build();
474     mockFunctionService.addResponse(resultOperation);
475 
476     FunctionName name = FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]");
477 
478     client.deleteFunctionAsync(name).get();
479 
480     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
481     Assert.assertEquals(1, actualRequests.size());
482     DeleteFunctionRequest actualRequest = ((DeleteFunctionRequest) actualRequests.get(0));
483 
484     Assert.assertEquals(name.toString(), actualRequest.getName());
485     Assert.assertTrue(
486         channelProvider.isHeaderSent(
487             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
488             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
489   }
490 
491   @Test
deleteFunctionExceptionTest()492   public void deleteFunctionExceptionTest() throws Exception {
493     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
494     mockFunctionService.addException(exception);
495 
496     try {
497       FunctionName name = FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]");
498       client.deleteFunctionAsync(name).get();
499       Assert.fail("No exception raised");
500     } catch (ExecutionException e) {
501       Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
502       InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause());
503       Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
504     }
505   }
506 
507   @Test
deleteFunctionTest2()508   public void deleteFunctionTest2() throws Exception {
509     Empty expectedResponse = Empty.newBuilder().build();
510     Operation resultOperation =
511         Operation.newBuilder()
512             .setName("deleteFunctionTest")
513             .setDone(true)
514             .setResponse(Any.pack(expectedResponse))
515             .build();
516     mockFunctionService.addResponse(resultOperation);
517 
518     String name = "name3373707";
519 
520     client.deleteFunctionAsync(name).get();
521 
522     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
523     Assert.assertEquals(1, actualRequests.size());
524     DeleteFunctionRequest actualRequest = ((DeleteFunctionRequest) actualRequests.get(0));
525 
526     Assert.assertEquals(name, actualRequest.getName());
527     Assert.assertTrue(
528         channelProvider.isHeaderSent(
529             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
530             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
531   }
532 
533   @Test
deleteFunctionExceptionTest2()534   public void deleteFunctionExceptionTest2() throws Exception {
535     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
536     mockFunctionService.addException(exception);
537 
538     try {
539       String name = "name3373707";
540       client.deleteFunctionAsync(name).get();
541       Assert.fail("No exception raised");
542     } catch (ExecutionException e) {
543       Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
544       InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause());
545       Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
546     }
547   }
548 
549   @Test
generateUploadUrlTest()550   public void generateUploadUrlTest() throws Exception {
551     GenerateUploadUrlResponse expectedResponse =
552         GenerateUploadUrlResponse.newBuilder()
553             .setUploadUrl("uploadUrl1239085998")
554             .setStorageSource(StorageSource.newBuilder().build())
555             .build();
556     mockFunctionService.addResponse(expectedResponse);
557 
558     GenerateUploadUrlRequest request =
559         GenerateUploadUrlRequest.newBuilder()
560             .setParent(LocationName.of("[PROJECT]", "[LOCATION]").toString())
561             .build();
562 
563     GenerateUploadUrlResponse actualResponse = client.generateUploadUrl(request);
564     Assert.assertEquals(expectedResponse, actualResponse);
565 
566     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
567     Assert.assertEquals(1, actualRequests.size());
568     GenerateUploadUrlRequest actualRequest = ((GenerateUploadUrlRequest) actualRequests.get(0));
569 
570     Assert.assertEquals(request.getParent(), actualRequest.getParent());
571     Assert.assertTrue(
572         channelProvider.isHeaderSent(
573             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
574             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
575   }
576 
577   @Test
generateUploadUrlExceptionTest()578   public void generateUploadUrlExceptionTest() throws Exception {
579     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
580     mockFunctionService.addException(exception);
581 
582     try {
583       GenerateUploadUrlRequest request =
584           GenerateUploadUrlRequest.newBuilder()
585               .setParent(LocationName.of("[PROJECT]", "[LOCATION]").toString())
586               .build();
587       client.generateUploadUrl(request);
588       Assert.fail("No exception raised");
589     } catch (InvalidArgumentException e) {
590       // Expected exception.
591     }
592   }
593 
594   @Test
generateDownloadUrlTest()595   public void generateDownloadUrlTest() throws Exception {
596     GenerateDownloadUrlResponse expectedResponse =
597         GenerateDownloadUrlResponse.newBuilder().setDownloadUrl("downloadUrl-1211148345").build();
598     mockFunctionService.addResponse(expectedResponse);
599 
600     GenerateDownloadUrlRequest request =
601         GenerateDownloadUrlRequest.newBuilder()
602             .setName(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
603             .build();
604 
605     GenerateDownloadUrlResponse actualResponse = client.generateDownloadUrl(request);
606     Assert.assertEquals(expectedResponse, actualResponse);
607 
608     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
609     Assert.assertEquals(1, actualRequests.size());
610     GenerateDownloadUrlRequest actualRequest = ((GenerateDownloadUrlRequest) actualRequests.get(0));
611 
612     Assert.assertEquals(request.getName(), actualRequest.getName());
613     Assert.assertTrue(
614         channelProvider.isHeaderSent(
615             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
616             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
617   }
618 
619   @Test
generateDownloadUrlExceptionTest()620   public void generateDownloadUrlExceptionTest() throws Exception {
621     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
622     mockFunctionService.addException(exception);
623 
624     try {
625       GenerateDownloadUrlRequest request =
626           GenerateDownloadUrlRequest.newBuilder()
627               .setName(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
628               .build();
629       client.generateDownloadUrl(request);
630       Assert.fail("No exception raised");
631     } catch (InvalidArgumentException e) {
632       // Expected exception.
633     }
634   }
635 
636   @Test
listRuntimesTest()637   public void listRuntimesTest() throws Exception {
638     ListRuntimesResponse expectedResponse =
639         ListRuntimesResponse.newBuilder()
640             .addAllRuntimes(new ArrayList<ListRuntimesResponse.Runtime>())
641             .build();
642     mockFunctionService.addResponse(expectedResponse);
643 
644     LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
645 
646     ListRuntimesResponse actualResponse = client.listRuntimes(parent);
647     Assert.assertEquals(expectedResponse, actualResponse);
648 
649     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
650     Assert.assertEquals(1, actualRequests.size());
651     ListRuntimesRequest actualRequest = ((ListRuntimesRequest) actualRequests.get(0));
652 
653     Assert.assertEquals(parent.toString(), actualRequest.getParent());
654     Assert.assertTrue(
655         channelProvider.isHeaderSent(
656             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
657             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
658   }
659 
660   @Test
listRuntimesExceptionTest()661   public void listRuntimesExceptionTest() throws Exception {
662     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
663     mockFunctionService.addException(exception);
664 
665     try {
666       LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
667       client.listRuntimes(parent);
668       Assert.fail("No exception raised");
669     } catch (InvalidArgumentException e) {
670       // Expected exception.
671     }
672   }
673 
674   @Test
listRuntimesTest2()675   public void listRuntimesTest2() throws Exception {
676     ListRuntimesResponse expectedResponse =
677         ListRuntimesResponse.newBuilder()
678             .addAllRuntimes(new ArrayList<ListRuntimesResponse.Runtime>())
679             .build();
680     mockFunctionService.addResponse(expectedResponse);
681 
682     String parent = "parent-995424086";
683 
684     ListRuntimesResponse actualResponse = client.listRuntimes(parent);
685     Assert.assertEquals(expectedResponse, actualResponse);
686 
687     List<AbstractMessage> actualRequests = mockFunctionService.getRequests();
688     Assert.assertEquals(1, actualRequests.size());
689     ListRuntimesRequest actualRequest = ((ListRuntimesRequest) actualRequests.get(0));
690 
691     Assert.assertEquals(parent, actualRequest.getParent());
692     Assert.assertTrue(
693         channelProvider.isHeaderSent(
694             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
695             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
696   }
697 
698   @Test
listRuntimesExceptionTest2()699   public void listRuntimesExceptionTest2() throws Exception {
700     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
701     mockFunctionService.addException(exception);
702 
703     try {
704       String parent = "parent-995424086";
705       client.listRuntimes(parent);
706       Assert.fail("No exception raised");
707     } catch (InvalidArgumentException e) {
708       // Expected exception.
709     }
710   }
711 
712   @Test
listLocationsTest()713   public void listLocationsTest() throws Exception {
714     Location responsesElement = Location.newBuilder().build();
715     ListLocationsResponse expectedResponse =
716         ListLocationsResponse.newBuilder()
717             .setNextPageToken("")
718             .addAllLocations(Arrays.asList(responsesElement))
719             .build();
720     mockLocations.addResponse(expectedResponse);
721 
722     ListLocationsRequest request =
723         ListLocationsRequest.newBuilder()
724             .setName("name3373707")
725             .setFilter("filter-1274492040")
726             .setPageSize(883849137)
727             .setPageToken("pageToken873572522")
728             .build();
729 
730     ListLocationsPagedResponse pagedListResponse = client.listLocations(request);
731 
732     List<Location> resources = Lists.newArrayList(pagedListResponse.iterateAll());
733 
734     Assert.assertEquals(1, resources.size());
735     Assert.assertEquals(expectedResponse.getLocationsList().get(0), resources.get(0));
736 
737     List<AbstractMessage> actualRequests = mockLocations.getRequests();
738     Assert.assertEquals(1, actualRequests.size());
739     ListLocationsRequest actualRequest = ((ListLocationsRequest) actualRequests.get(0));
740 
741     Assert.assertEquals(request.getName(), actualRequest.getName());
742     Assert.assertEquals(request.getFilter(), actualRequest.getFilter());
743     Assert.assertEquals(request.getPageSize(), actualRequest.getPageSize());
744     Assert.assertEquals(request.getPageToken(), actualRequest.getPageToken());
745     Assert.assertTrue(
746         channelProvider.isHeaderSent(
747             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
748             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
749   }
750 
751   @Test
listLocationsExceptionTest()752   public void listLocationsExceptionTest() throws Exception {
753     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
754     mockLocations.addException(exception);
755 
756     try {
757       ListLocationsRequest request =
758           ListLocationsRequest.newBuilder()
759               .setName("name3373707")
760               .setFilter("filter-1274492040")
761               .setPageSize(883849137)
762               .setPageToken("pageToken873572522")
763               .build();
764       client.listLocations(request);
765       Assert.fail("No exception raised");
766     } catch (InvalidArgumentException e) {
767       // Expected exception.
768     }
769   }
770 
771   @Test
setIamPolicyTest()772   public void setIamPolicyTest() throws Exception {
773     Policy expectedResponse =
774         Policy.newBuilder()
775             .setVersion(351608024)
776             .addAllBindings(new ArrayList<Binding>())
777             .addAllAuditConfigs(new ArrayList<AuditConfig>())
778             .setEtag(ByteString.EMPTY)
779             .build();
780     mockIAMPolicy.addResponse(expectedResponse);
781 
782     SetIamPolicyRequest request =
783         SetIamPolicyRequest.newBuilder()
784             .setResource(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
785             .setPolicy(Policy.newBuilder().build())
786             .setUpdateMask(FieldMask.newBuilder().build())
787             .build();
788 
789     Policy actualResponse = client.setIamPolicy(request);
790     Assert.assertEquals(expectedResponse, actualResponse);
791 
792     List<AbstractMessage> actualRequests = mockIAMPolicy.getRequests();
793     Assert.assertEquals(1, actualRequests.size());
794     SetIamPolicyRequest actualRequest = ((SetIamPolicyRequest) actualRequests.get(0));
795 
796     Assert.assertEquals(request.getResource(), actualRequest.getResource());
797     Assert.assertEquals(request.getPolicy(), actualRequest.getPolicy());
798     Assert.assertEquals(request.getUpdateMask(), actualRequest.getUpdateMask());
799     Assert.assertTrue(
800         channelProvider.isHeaderSent(
801             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
802             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
803   }
804 
805   @Test
setIamPolicyExceptionTest()806   public void setIamPolicyExceptionTest() throws Exception {
807     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
808     mockIAMPolicy.addException(exception);
809 
810     try {
811       SetIamPolicyRequest request =
812           SetIamPolicyRequest.newBuilder()
813               .setResource(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
814               .setPolicy(Policy.newBuilder().build())
815               .setUpdateMask(FieldMask.newBuilder().build())
816               .build();
817       client.setIamPolicy(request);
818       Assert.fail("No exception raised");
819     } catch (InvalidArgumentException e) {
820       // Expected exception.
821     }
822   }
823 
824   @Test
getIamPolicyTest()825   public void getIamPolicyTest() throws Exception {
826     Policy expectedResponse =
827         Policy.newBuilder()
828             .setVersion(351608024)
829             .addAllBindings(new ArrayList<Binding>())
830             .addAllAuditConfigs(new ArrayList<AuditConfig>())
831             .setEtag(ByteString.EMPTY)
832             .build();
833     mockIAMPolicy.addResponse(expectedResponse);
834 
835     GetIamPolicyRequest request =
836         GetIamPolicyRequest.newBuilder()
837             .setResource(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
838             .setOptions(GetPolicyOptions.newBuilder().build())
839             .build();
840 
841     Policy actualResponse = client.getIamPolicy(request);
842     Assert.assertEquals(expectedResponse, actualResponse);
843 
844     List<AbstractMessage> actualRequests = mockIAMPolicy.getRequests();
845     Assert.assertEquals(1, actualRequests.size());
846     GetIamPolicyRequest actualRequest = ((GetIamPolicyRequest) actualRequests.get(0));
847 
848     Assert.assertEquals(request.getResource(), actualRequest.getResource());
849     Assert.assertEquals(request.getOptions(), actualRequest.getOptions());
850     Assert.assertTrue(
851         channelProvider.isHeaderSent(
852             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
853             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
854   }
855 
856   @Test
getIamPolicyExceptionTest()857   public void getIamPolicyExceptionTest() throws Exception {
858     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
859     mockIAMPolicy.addException(exception);
860 
861     try {
862       GetIamPolicyRequest request =
863           GetIamPolicyRequest.newBuilder()
864               .setResource(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
865               .setOptions(GetPolicyOptions.newBuilder().build())
866               .build();
867       client.getIamPolicy(request);
868       Assert.fail("No exception raised");
869     } catch (InvalidArgumentException e) {
870       // Expected exception.
871     }
872   }
873 
874   @Test
testIamPermissionsTest()875   public void testIamPermissionsTest() throws Exception {
876     TestIamPermissionsResponse expectedResponse =
877         TestIamPermissionsResponse.newBuilder().addAllPermissions(new ArrayList<String>()).build();
878     mockIAMPolicy.addResponse(expectedResponse);
879 
880     TestIamPermissionsRequest request =
881         TestIamPermissionsRequest.newBuilder()
882             .setResource(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
883             .addAllPermissions(new ArrayList<String>())
884             .build();
885 
886     TestIamPermissionsResponse actualResponse = client.testIamPermissions(request);
887     Assert.assertEquals(expectedResponse, actualResponse);
888 
889     List<AbstractMessage> actualRequests = mockIAMPolicy.getRequests();
890     Assert.assertEquals(1, actualRequests.size());
891     TestIamPermissionsRequest actualRequest = ((TestIamPermissionsRequest) actualRequests.get(0));
892 
893     Assert.assertEquals(request.getResource(), actualRequest.getResource());
894     Assert.assertEquals(request.getPermissionsList(), actualRequest.getPermissionsList());
895     Assert.assertTrue(
896         channelProvider.isHeaderSent(
897             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
898             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
899   }
900 
901   @Test
testIamPermissionsExceptionTest()902   public void testIamPermissionsExceptionTest() throws Exception {
903     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
904     mockIAMPolicy.addException(exception);
905 
906     try {
907       TestIamPermissionsRequest request =
908           TestIamPermissionsRequest.newBuilder()
909               .setResource(FunctionName.of("[PROJECT]", "[LOCATION]", "[FUNCTION]").toString())
910               .addAllPermissions(new ArrayList<String>())
911               .build();
912       client.testIamPermissions(request);
913       Assert.fail("No exception raised");
914     } catch (InvalidArgumentException e) {
915       // Expected exception.
916     }
917   }
918 }
919