• 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.discoveryengine.v1beta;
18 
19 import static com.google.cloud.discoveryengine.v1beta.DocumentServiceClient.ListDocumentsPagedResponse;
20 
21 import com.google.api.gax.core.NoCredentialsProvider;
22 import com.google.api.gax.grpc.GaxGrpcProperties;
23 import com.google.api.gax.grpc.testing.LocalChannelProvider;
24 import com.google.api.gax.grpc.testing.MockGrpcService;
25 import com.google.api.gax.grpc.testing.MockServiceHelper;
26 import com.google.api.gax.rpc.ApiClientHeaderProvider;
27 import com.google.api.gax.rpc.InvalidArgumentException;
28 import com.google.api.gax.rpc.StatusCode;
29 import com.google.common.collect.Lists;
30 import com.google.longrunning.Operation;
31 import com.google.protobuf.AbstractMessage;
32 import com.google.protobuf.Any;
33 import com.google.protobuf.Empty;
34 import com.google.protobuf.Struct;
35 import com.google.rpc.Status;
36 import io.grpc.StatusRuntimeException;
37 import java.io.IOException;
38 import java.util.ArrayList;
39 import java.util.Arrays;
40 import java.util.List;
41 import java.util.UUID;
42 import java.util.concurrent.ExecutionException;
43 import javax.annotation.Generated;
44 import org.junit.After;
45 import org.junit.AfterClass;
46 import org.junit.Assert;
47 import org.junit.Before;
48 import org.junit.BeforeClass;
49 import org.junit.Test;
50 
51 @Generated("by gapic-generator-java")
52 public class DocumentServiceClientTest {
53   private static MockDocumentService mockDocumentService;
54   private static MockServiceHelper mockServiceHelper;
55   private LocalChannelProvider channelProvider;
56   private DocumentServiceClient client;
57 
58   @BeforeClass
startStaticServer()59   public static void startStaticServer() {
60     mockDocumentService = new MockDocumentService();
61     mockServiceHelper =
62         new MockServiceHelper(
63             UUID.randomUUID().toString(), Arrays.<MockGrpcService>asList(mockDocumentService));
64     mockServiceHelper.start();
65   }
66 
67   @AfterClass
stopServer()68   public static void stopServer() {
69     mockServiceHelper.stop();
70   }
71 
72   @Before
setUp()73   public void setUp() throws IOException {
74     mockServiceHelper.reset();
75     channelProvider = mockServiceHelper.createChannelProvider();
76     DocumentServiceSettings settings =
77         DocumentServiceSettings.newBuilder()
78             .setTransportChannelProvider(channelProvider)
79             .setCredentialsProvider(NoCredentialsProvider.create())
80             .build();
81     client = DocumentServiceClient.create(settings);
82   }
83 
84   @After
tearDown()85   public void tearDown() throws Exception {
86     client.close();
87   }
88 
89   @Test
getDocumentTest()90   public void getDocumentTest() throws Exception {
91     Document expectedResponse =
92         Document.newBuilder()
93             .setName(
94                 DocumentName.ofProjectLocationDataStoreBranchDocumentName(
95                         "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]", "[DOCUMENT]")
96                     .toString())
97             .setId("id3355")
98             .setSchemaId("schemaId-697673060")
99             .setContent(Document.Content.newBuilder().build())
100             .setParentDocumentId("parentDocumentId1990105056")
101             .setDerivedStructData(Struct.newBuilder().build())
102             .build();
103     mockDocumentService.addResponse(expectedResponse);
104 
105     DocumentName name =
106         DocumentName.ofProjectLocationDataStoreBranchDocumentName(
107             "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]", "[DOCUMENT]");
108 
109     Document actualResponse = client.getDocument(name);
110     Assert.assertEquals(expectedResponse, actualResponse);
111 
112     List<AbstractMessage> actualRequests = mockDocumentService.getRequests();
113     Assert.assertEquals(1, actualRequests.size());
114     GetDocumentRequest actualRequest = ((GetDocumentRequest) actualRequests.get(0));
115 
116     Assert.assertEquals(name.toString(), actualRequest.getName());
117     Assert.assertTrue(
118         channelProvider.isHeaderSent(
119             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
120             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
121   }
122 
123   @Test
getDocumentExceptionTest()124   public void getDocumentExceptionTest() throws Exception {
125     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
126     mockDocumentService.addException(exception);
127 
128     try {
129       DocumentName name =
130           DocumentName.ofProjectLocationDataStoreBranchDocumentName(
131               "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]", "[DOCUMENT]");
132       client.getDocument(name);
133       Assert.fail("No exception raised");
134     } catch (InvalidArgumentException e) {
135       // Expected exception.
136     }
137   }
138 
139   @Test
getDocumentTest2()140   public void getDocumentTest2() throws Exception {
141     Document expectedResponse =
142         Document.newBuilder()
143             .setName(
144                 DocumentName.ofProjectLocationDataStoreBranchDocumentName(
145                         "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]", "[DOCUMENT]")
146                     .toString())
147             .setId("id3355")
148             .setSchemaId("schemaId-697673060")
149             .setContent(Document.Content.newBuilder().build())
150             .setParentDocumentId("parentDocumentId1990105056")
151             .setDerivedStructData(Struct.newBuilder().build())
152             .build();
153     mockDocumentService.addResponse(expectedResponse);
154 
155     String name = "name3373707";
156 
157     Document actualResponse = client.getDocument(name);
158     Assert.assertEquals(expectedResponse, actualResponse);
159 
160     List<AbstractMessage> actualRequests = mockDocumentService.getRequests();
161     Assert.assertEquals(1, actualRequests.size());
162     GetDocumentRequest actualRequest = ((GetDocumentRequest) actualRequests.get(0));
163 
164     Assert.assertEquals(name, actualRequest.getName());
165     Assert.assertTrue(
166         channelProvider.isHeaderSent(
167             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
168             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
169   }
170 
171   @Test
getDocumentExceptionTest2()172   public void getDocumentExceptionTest2() throws Exception {
173     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
174     mockDocumentService.addException(exception);
175 
176     try {
177       String name = "name3373707";
178       client.getDocument(name);
179       Assert.fail("No exception raised");
180     } catch (InvalidArgumentException e) {
181       // Expected exception.
182     }
183   }
184 
185   @Test
listDocumentsTest()186   public void listDocumentsTest() throws Exception {
187     Document responsesElement = Document.newBuilder().build();
188     ListDocumentsResponse expectedResponse =
189         ListDocumentsResponse.newBuilder()
190             .setNextPageToken("")
191             .addAllDocuments(Arrays.asList(responsesElement))
192             .build();
193     mockDocumentService.addResponse(expectedResponse);
194 
195     BranchName parent =
196         BranchName.ofProjectLocationDataStoreBranchName(
197             "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]");
198 
199     ListDocumentsPagedResponse pagedListResponse = client.listDocuments(parent);
200 
201     List<Document> resources = Lists.newArrayList(pagedListResponse.iterateAll());
202 
203     Assert.assertEquals(1, resources.size());
204     Assert.assertEquals(expectedResponse.getDocumentsList().get(0), resources.get(0));
205 
206     List<AbstractMessage> actualRequests = mockDocumentService.getRequests();
207     Assert.assertEquals(1, actualRequests.size());
208     ListDocumentsRequest actualRequest = ((ListDocumentsRequest) actualRequests.get(0));
209 
210     Assert.assertEquals(parent.toString(), actualRequest.getParent());
211     Assert.assertTrue(
212         channelProvider.isHeaderSent(
213             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
214             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
215   }
216 
217   @Test
listDocumentsExceptionTest()218   public void listDocumentsExceptionTest() throws Exception {
219     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
220     mockDocumentService.addException(exception);
221 
222     try {
223       BranchName parent =
224           BranchName.ofProjectLocationDataStoreBranchName(
225               "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]");
226       client.listDocuments(parent);
227       Assert.fail("No exception raised");
228     } catch (InvalidArgumentException e) {
229       // Expected exception.
230     }
231   }
232 
233   @Test
listDocumentsTest2()234   public void listDocumentsTest2() throws Exception {
235     Document responsesElement = Document.newBuilder().build();
236     ListDocumentsResponse expectedResponse =
237         ListDocumentsResponse.newBuilder()
238             .setNextPageToken("")
239             .addAllDocuments(Arrays.asList(responsesElement))
240             .build();
241     mockDocumentService.addResponse(expectedResponse);
242 
243     String parent = "parent-995424086";
244 
245     ListDocumentsPagedResponse pagedListResponse = client.listDocuments(parent);
246 
247     List<Document> resources = Lists.newArrayList(pagedListResponse.iterateAll());
248 
249     Assert.assertEquals(1, resources.size());
250     Assert.assertEquals(expectedResponse.getDocumentsList().get(0), resources.get(0));
251 
252     List<AbstractMessage> actualRequests = mockDocumentService.getRequests();
253     Assert.assertEquals(1, actualRequests.size());
254     ListDocumentsRequest actualRequest = ((ListDocumentsRequest) actualRequests.get(0));
255 
256     Assert.assertEquals(parent, actualRequest.getParent());
257     Assert.assertTrue(
258         channelProvider.isHeaderSent(
259             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
260             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
261   }
262 
263   @Test
listDocumentsExceptionTest2()264   public void listDocumentsExceptionTest2() throws Exception {
265     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
266     mockDocumentService.addException(exception);
267 
268     try {
269       String parent = "parent-995424086";
270       client.listDocuments(parent);
271       Assert.fail("No exception raised");
272     } catch (InvalidArgumentException e) {
273       // Expected exception.
274     }
275   }
276 
277   @Test
createDocumentTest()278   public void createDocumentTest() throws Exception {
279     Document expectedResponse =
280         Document.newBuilder()
281             .setName(
282                 DocumentName.ofProjectLocationDataStoreBranchDocumentName(
283                         "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]", "[DOCUMENT]")
284                     .toString())
285             .setId("id3355")
286             .setSchemaId("schemaId-697673060")
287             .setContent(Document.Content.newBuilder().build())
288             .setParentDocumentId("parentDocumentId1990105056")
289             .setDerivedStructData(Struct.newBuilder().build())
290             .build();
291     mockDocumentService.addResponse(expectedResponse);
292 
293     BranchName parent =
294         BranchName.ofProjectLocationDataStoreBranchName(
295             "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]");
296     Document document = Document.newBuilder().build();
297     String documentId = "documentId-814940266";
298 
299     Document actualResponse = client.createDocument(parent, document, documentId);
300     Assert.assertEquals(expectedResponse, actualResponse);
301 
302     List<AbstractMessage> actualRequests = mockDocumentService.getRequests();
303     Assert.assertEquals(1, actualRequests.size());
304     CreateDocumentRequest actualRequest = ((CreateDocumentRequest) actualRequests.get(0));
305 
306     Assert.assertEquals(parent.toString(), actualRequest.getParent());
307     Assert.assertEquals(document, actualRequest.getDocument());
308     Assert.assertEquals(documentId, actualRequest.getDocumentId());
309     Assert.assertTrue(
310         channelProvider.isHeaderSent(
311             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
312             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
313   }
314 
315   @Test
createDocumentExceptionTest()316   public void createDocumentExceptionTest() throws Exception {
317     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
318     mockDocumentService.addException(exception);
319 
320     try {
321       BranchName parent =
322           BranchName.ofProjectLocationDataStoreBranchName(
323               "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]");
324       Document document = Document.newBuilder().build();
325       String documentId = "documentId-814940266";
326       client.createDocument(parent, document, documentId);
327       Assert.fail("No exception raised");
328     } catch (InvalidArgumentException e) {
329       // Expected exception.
330     }
331   }
332 
333   @Test
createDocumentTest2()334   public void createDocumentTest2() throws Exception {
335     Document expectedResponse =
336         Document.newBuilder()
337             .setName(
338                 DocumentName.ofProjectLocationDataStoreBranchDocumentName(
339                         "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]", "[DOCUMENT]")
340                     .toString())
341             .setId("id3355")
342             .setSchemaId("schemaId-697673060")
343             .setContent(Document.Content.newBuilder().build())
344             .setParentDocumentId("parentDocumentId1990105056")
345             .setDerivedStructData(Struct.newBuilder().build())
346             .build();
347     mockDocumentService.addResponse(expectedResponse);
348 
349     String parent = "parent-995424086";
350     Document document = Document.newBuilder().build();
351     String documentId = "documentId-814940266";
352 
353     Document actualResponse = client.createDocument(parent, document, documentId);
354     Assert.assertEquals(expectedResponse, actualResponse);
355 
356     List<AbstractMessage> actualRequests = mockDocumentService.getRequests();
357     Assert.assertEquals(1, actualRequests.size());
358     CreateDocumentRequest actualRequest = ((CreateDocumentRequest) actualRequests.get(0));
359 
360     Assert.assertEquals(parent, actualRequest.getParent());
361     Assert.assertEquals(document, actualRequest.getDocument());
362     Assert.assertEquals(documentId, actualRequest.getDocumentId());
363     Assert.assertTrue(
364         channelProvider.isHeaderSent(
365             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
366             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
367   }
368 
369   @Test
createDocumentExceptionTest2()370   public void createDocumentExceptionTest2() throws Exception {
371     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
372     mockDocumentService.addException(exception);
373 
374     try {
375       String parent = "parent-995424086";
376       Document document = Document.newBuilder().build();
377       String documentId = "documentId-814940266";
378       client.createDocument(parent, document, documentId);
379       Assert.fail("No exception raised");
380     } catch (InvalidArgumentException e) {
381       // Expected exception.
382     }
383   }
384 
385   @Test
updateDocumentTest()386   public void updateDocumentTest() throws Exception {
387     Document expectedResponse =
388         Document.newBuilder()
389             .setName(
390                 DocumentName.ofProjectLocationDataStoreBranchDocumentName(
391                         "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]", "[DOCUMENT]")
392                     .toString())
393             .setId("id3355")
394             .setSchemaId("schemaId-697673060")
395             .setContent(Document.Content.newBuilder().build())
396             .setParentDocumentId("parentDocumentId1990105056")
397             .setDerivedStructData(Struct.newBuilder().build())
398             .build();
399     mockDocumentService.addResponse(expectedResponse);
400 
401     UpdateDocumentRequest request =
402         UpdateDocumentRequest.newBuilder()
403             .setDocument(Document.newBuilder().build())
404             .setAllowMissing(true)
405             .build();
406 
407     Document actualResponse = client.updateDocument(request);
408     Assert.assertEquals(expectedResponse, actualResponse);
409 
410     List<AbstractMessage> actualRequests = mockDocumentService.getRequests();
411     Assert.assertEquals(1, actualRequests.size());
412     UpdateDocumentRequest actualRequest = ((UpdateDocumentRequest) actualRequests.get(0));
413 
414     Assert.assertEquals(request.getDocument(), actualRequest.getDocument());
415     Assert.assertEquals(request.getAllowMissing(), actualRequest.getAllowMissing());
416     Assert.assertTrue(
417         channelProvider.isHeaderSent(
418             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
419             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
420   }
421 
422   @Test
updateDocumentExceptionTest()423   public void updateDocumentExceptionTest() throws Exception {
424     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
425     mockDocumentService.addException(exception);
426 
427     try {
428       UpdateDocumentRequest request =
429           UpdateDocumentRequest.newBuilder()
430               .setDocument(Document.newBuilder().build())
431               .setAllowMissing(true)
432               .build();
433       client.updateDocument(request);
434       Assert.fail("No exception raised");
435     } catch (InvalidArgumentException e) {
436       // Expected exception.
437     }
438   }
439 
440   @Test
deleteDocumentTest()441   public void deleteDocumentTest() throws Exception {
442     Empty expectedResponse = Empty.newBuilder().build();
443     mockDocumentService.addResponse(expectedResponse);
444 
445     DocumentName name =
446         DocumentName.ofProjectLocationDataStoreBranchDocumentName(
447             "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]", "[DOCUMENT]");
448 
449     client.deleteDocument(name);
450 
451     List<AbstractMessage> actualRequests = mockDocumentService.getRequests();
452     Assert.assertEquals(1, actualRequests.size());
453     DeleteDocumentRequest actualRequest = ((DeleteDocumentRequest) actualRequests.get(0));
454 
455     Assert.assertEquals(name.toString(), actualRequest.getName());
456     Assert.assertTrue(
457         channelProvider.isHeaderSent(
458             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
459             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
460   }
461 
462   @Test
deleteDocumentExceptionTest()463   public void deleteDocumentExceptionTest() throws Exception {
464     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
465     mockDocumentService.addException(exception);
466 
467     try {
468       DocumentName name =
469           DocumentName.ofProjectLocationDataStoreBranchDocumentName(
470               "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]", "[DOCUMENT]");
471       client.deleteDocument(name);
472       Assert.fail("No exception raised");
473     } catch (InvalidArgumentException e) {
474       // Expected exception.
475     }
476   }
477 
478   @Test
deleteDocumentTest2()479   public void deleteDocumentTest2() throws Exception {
480     Empty expectedResponse = Empty.newBuilder().build();
481     mockDocumentService.addResponse(expectedResponse);
482 
483     String name = "name3373707";
484 
485     client.deleteDocument(name);
486 
487     List<AbstractMessage> actualRequests = mockDocumentService.getRequests();
488     Assert.assertEquals(1, actualRequests.size());
489     DeleteDocumentRequest actualRequest = ((DeleteDocumentRequest) actualRequests.get(0));
490 
491     Assert.assertEquals(name, actualRequest.getName());
492     Assert.assertTrue(
493         channelProvider.isHeaderSent(
494             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
495             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
496   }
497 
498   @Test
deleteDocumentExceptionTest2()499   public void deleteDocumentExceptionTest2() throws Exception {
500     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
501     mockDocumentService.addException(exception);
502 
503     try {
504       String name = "name3373707";
505       client.deleteDocument(name);
506       Assert.fail("No exception raised");
507     } catch (InvalidArgumentException e) {
508       // Expected exception.
509     }
510   }
511 
512   @Test
importDocumentsTest()513   public void importDocumentsTest() throws Exception {
514     ImportDocumentsResponse expectedResponse =
515         ImportDocumentsResponse.newBuilder()
516             .addAllErrorSamples(new ArrayList<Status>())
517             .setErrorConfig(ImportErrorConfig.newBuilder().build())
518             .build();
519     Operation resultOperation =
520         Operation.newBuilder()
521             .setName("importDocumentsTest")
522             .setDone(true)
523             .setResponse(Any.pack(expectedResponse))
524             .build();
525     mockDocumentService.addResponse(resultOperation);
526 
527     ImportDocumentsRequest request =
528         ImportDocumentsRequest.newBuilder()
529             .setParent(
530                 BranchName.ofProjectLocationDataStoreBranchName(
531                         "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
532                     .toString())
533             .setErrorConfig(ImportErrorConfig.newBuilder().build())
534             .build();
535 
536     ImportDocumentsResponse actualResponse = client.importDocumentsAsync(request).get();
537     Assert.assertEquals(expectedResponse, actualResponse);
538 
539     List<AbstractMessage> actualRequests = mockDocumentService.getRequests();
540     Assert.assertEquals(1, actualRequests.size());
541     ImportDocumentsRequest actualRequest = ((ImportDocumentsRequest) actualRequests.get(0));
542 
543     Assert.assertEquals(request.getInlineSource(), actualRequest.getInlineSource());
544     Assert.assertEquals(request.getGcsSource(), actualRequest.getGcsSource());
545     Assert.assertEquals(request.getBigquerySource(), actualRequest.getBigquerySource());
546     Assert.assertEquals(request.getParent(), actualRequest.getParent());
547     Assert.assertEquals(request.getErrorConfig(), actualRequest.getErrorConfig());
548     Assert.assertEquals(request.getReconciliationMode(), actualRequest.getReconciliationMode());
549     Assert.assertTrue(
550         channelProvider.isHeaderSent(
551             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
552             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
553   }
554 
555   @Test
importDocumentsExceptionTest()556   public void importDocumentsExceptionTest() throws Exception {
557     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
558     mockDocumentService.addException(exception);
559 
560     try {
561       ImportDocumentsRequest request =
562           ImportDocumentsRequest.newBuilder()
563               .setParent(
564                   BranchName.ofProjectLocationDataStoreBranchName(
565                           "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
566                       .toString())
567               .setErrorConfig(ImportErrorConfig.newBuilder().build())
568               .build();
569       client.importDocumentsAsync(request).get();
570       Assert.fail("No exception raised");
571     } catch (ExecutionException e) {
572       Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
573       InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause());
574       Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
575     }
576   }
577 
578   @Test
purgeDocumentsTest()579   public void purgeDocumentsTest() throws Exception {
580     PurgeDocumentsResponse expectedResponse =
581         PurgeDocumentsResponse.newBuilder()
582             .setPurgeCount(575305851)
583             .addAllPurgeSample(new ArrayList<String>())
584             .build();
585     Operation resultOperation =
586         Operation.newBuilder()
587             .setName("purgeDocumentsTest")
588             .setDone(true)
589             .setResponse(Any.pack(expectedResponse))
590             .build();
591     mockDocumentService.addResponse(resultOperation);
592 
593     PurgeDocumentsRequest request =
594         PurgeDocumentsRequest.newBuilder()
595             .setParent(
596                 BranchName.ofProjectLocationDataStoreBranchName(
597                         "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
598                     .toString())
599             .setFilter("filter-1274492040")
600             .setForce(true)
601             .build();
602 
603     PurgeDocumentsResponse actualResponse = client.purgeDocumentsAsync(request).get();
604     Assert.assertEquals(expectedResponse, actualResponse);
605 
606     List<AbstractMessage> actualRequests = mockDocumentService.getRequests();
607     Assert.assertEquals(1, actualRequests.size());
608     PurgeDocumentsRequest actualRequest = ((PurgeDocumentsRequest) actualRequests.get(0));
609 
610     Assert.assertEquals(request.getParent(), actualRequest.getParent());
611     Assert.assertEquals(request.getFilter(), actualRequest.getFilter());
612     Assert.assertEquals(request.getForce(), actualRequest.getForce());
613     Assert.assertTrue(
614         channelProvider.isHeaderSent(
615             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
616             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
617   }
618 
619   @Test
purgeDocumentsExceptionTest()620   public void purgeDocumentsExceptionTest() throws Exception {
621     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
622     mockDocumentService.addException(exception);
623 
624     try {
625       PurgeDocumentsRequest request =
626           PurgeDocumentsRequest.newBuilder()
627               .setParent(
628                   BranchName.ofProjectLocationDataStoreBranchName(
629                           "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
630                       .toString())
631               .setFilter("filter-1274492040")
632               .setForce(true)
633               .build();
634       client.purgeDocumentsAsync(request).get();
635       Assert.fail("No exception raised");
636     } catch (ExecutionException e) {
637       Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
638       InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause());
639       Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
640     }
641   }
642 }
643