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