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.retail.v2beta; 18 19 import com.google.api.gax.core.NoCredentialsProvider; 20 import com.google.api.gax.grpc.GaxGrpcProperties; 21 import com.google.api.gax.grpc.testing.LocalChannelProvider; 22 import com.google.api.gax.grpc.testing.MockGrpcService; 23 import com.google.api.gax.grpc.testing.MockServiceHelper; 24 import com.google.api.gax.rpc.ApiClientHeaderProvider; 25 import com.google.api.gax.rpc.InvalidArgumentException; 26 import com.google.api.gax.rpc.StatusCode; 27 import com.google.longrunning.Operation; 28 import com.google.protobuf.AbstractMessage; 29 import com.google.protobuf.Any; 30 import com.google.rpc.Status; 31 import io.grpc.StatusRuntimeException; 32 import java.io.IOException; 33 import java.util.ArrayList; 34 import java.util.Arrays; 35 import java.util.List; 36 import java.util.UUID; 37 import java.util.concurrent.ExecutionException; 38 import javax.annotation.Generated; 39 import org.junit.After; 40 import org.junit.AfterClass; 41 import org.junit.Assert; 42 import org.junit.Before; 43 import org.junit.BeforeClass; 44 import org.junit.Test; 45 46 @Generated("by gapic-generator-java") 47 public class CompletionServiceClientTest { 48 private static MockCompletionService mockCompletionService; 49 private static MockServiceHelper mockServiceHelper; 50 private LocalChannelProvider channelProvider; 51 private CompletionServiceClient client; 52 53 @BeforeClass startStaticServer()54 public static void startStaticServer() { 55 mockCompletionService = new MockCompletionService(); 56 mockServiceHelper = 57 new MockServiceHelper( 58 UUID.randomUUID().toString(), Arrays.<MockGrpcService>asList(mockCompletionService)); 59 mockServiceHelper.start(); 60 } 61 62 @AfterClass stopServer()63 public static void stopServer() { 64 mockServiceHelper.stop(); 65 } 66 67 @Before setUp()68 public void setUp() throws IOException { 69 mockServiceHelper.reset(); 70 channelProvider = mockServiceHelper.createChannelProvider(); 71 CompletionServiceSettings settings = 72 CompletionServiceSettings.newBuilder() 73 .setTransportChannelProvider(channelProvider) 74 .setCredentialsProvider(NoCredentialsProvider.create()) 75 .build(); 76 client = CompletionServiceClient.create(settings); 77 } 78 79 @After tearDown()80 public void tearDown() throws Exception { 81 client.close(); 82 } 83 84 @Test completeQueryTest()85 public void completeQueryTest() throws Exception { 86 CompleteQueryResponse expectedResponse = 87 CompleteQueryResponse.newBuilder() 88 .addAllCompletionResults(new ArrayList<CompleteQueryResponse.CompletionResult>()) 89 .setAttributionToken("attributionToken104706234") 90 .addAllRecentSearchResults(new ArrayList<CompleteQueryResponse.RecentSearchResult>()) 91 .build(); 92 mockCompletionService.addResponse(expectedResponse); 93 94 CompleteQueryRequest request = 95 CompleteQueryRequest.newBuilder() 96 .setCatalog(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString()) 97 .setQuery("query107944136") 98 .setVisitorId("visitorId1880545833") 99 .addAllLanguageCodes(new ArrayList<String>()) 100 .setDeviceType("deviceType781190832") 101 .setDataset("dataset1443214456") 102 .setMaxSuggestions(618824852) 103 .setEntity("entity-1298275357") 104 .build(); 105 106 CompleteQueryResponse actualResponse = client.completeQuery(request); 107 Assert.assertEquals(expectedResponse, actualResponse); 108 109 List<AbstractMessage> actualRequests = mockCompletionService.getRequests(); 110 Assert.assertEquals(1, actualRequests.size()); 111 CompleteQueryRequest actualRequest = ((CompleteQueryRequest) actualRequests.get(0)); 112 113 Assert.assertEquals(request.getCatalog(), actualRequest.getCatalog()); 114 Assert.assertEquals(request.getQuery(), actualRequest.getQuery()); 115 Assert.assertEquals(request.getVisitorId(), actualRequest.getVisitorId()); 116 Assert.assertEquals(request.getLanguageCodesList(), actualRequest.getLanguageCodesList()); 117 Assert.assertEquals(request.getDeviceType(), actualRequest.getDeviceType()); 118 Assert.assertEquals(request.getDataset(), actualRequest.getDataset()); 119 Assert.assertEquals(request.getMaxSuggestions(), actualRequest.getMaxSuggestions()); 120 Assert.assertEquals(request.getEntity(), actualRequest.getEntity()); 121 Assert.assertTrue( 122 channelProvider.isHeaderSent( 123 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 124 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 125 } 126 127 @Test completeQueryExceptionTest()128 public void completeQueryExceptionTest() throws Exception { 129 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 130 mockCompletionService.addException(exception); 131 132 try { 133 CompleteQueryRequest request = 134 CompleteQueryRequest.newBuilder() 135 .setCatalog(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString()) 136 .setQuery("query107944136") 137 .setVisitorId("visitorId1880545833") 138 .addAllLanguageCodes(new ArrayList<String>()) 139 .setDeviceType("deviceType781190832") 140 .setDataset("dataset1443214456") 141 .setMaxSuggestions(618824852) 142 .setEntity("entity-1298275357") 143 .build(); 144 client.completeQuery(request); 145 Assert.fail("No exception raised"); 146 } catch (InvalidArgumentException e) { 147 // Expected exception. 148 } 149 } 150 151 @Test importCompletionDataTest()152 public void importCompletionDataTest() throws Exception { 153 ImportCompletionDataResponse expectedResponse = 154 ImportCompletionDataResponse.newBuilder() 155 .addAllErrorSamples(new ArrayList<Status>()) 156 .build(); 157 Operation resultOperation = 158 Operation.newBuilder() 159 .setName("importCompletionDataTest") 160 .setDone(true) 161 .setResponse(Any.pack(expectedResponse)) 162 .build(); 163 mockCompletionService.addResponse(resultOperation); 164 165 ImportCompletionDataRequest request = 166 ImportCompletionDataRequest.newBuilder() 167 .setParent(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString()) 168 .setInputConfig(CompletionDataInputConfig.newBuilder().build()) 169 .setNotificationPubsubTopic("notificationPubsubTopic-1361224991") 170 .build(); 171 172 ImportCompletionDataResponse actualResponse = client.importCompletionDataAsync(request).get(); 173 Assert.assertEquals(expectedResponse, actualResponse); 174 175 List<AbstractMessage> actualRequests = mockCompletionService.getRequests(); 176 Assert.assertEquals(1, actualRequests.size()); 177 ImportCompletionDataRequest actualRequest = 178 ((ImportCompletionDataRequest) actualRequests.get(0)); 179 180 Assert.assertEquals(request.getParent(), actualRequest.getParent()); 181 Assert.assertEquals(request.getInputConfig(), actualRequest.getInputConfig()); 182 Assert.assertEquals( 183 request.getNotificationPubsubTopic(), actualRequest.getNotificationPubsubTopic()); 184 Assert.assertTrue( 185 channelProvider.isHeaderSent( 186 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 187 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 188 } 189 190 @Test importCompletionDataExceptionTest()191 public void importCompletionDataExceptionTest() throws Exception { 192 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 193 mockCompletionService.addException(exception); 194 195 try { 196 ImportCompletionDataRequest request = 197 ImportCompletionDataRequest.newBuilder() 198 .setParent(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString()) 199 .setInputConfig(CompletionDataInputConfig.newBuilder().build()) 200 .setNotificationPubsubTopic("notificationPubsubTopic-1361224991") 201 .build(); 202 client.importCompletionDataAsync(request).get(); 203 Assert.fail("No exception raised"); 204 } catch (ExecutionException e) { 205 Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); 206 InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); 207 Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); 208 } 209 } 210 } 211