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 static com.google.cloud.retail.v2beta.SearchServiceClient.SearchPagedResponse; 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.common.collect.Lists; 29 import com.google.protobuf.AbstractMessage; 30 import io.grpc.StatusRuntimeException; 31 import java.io.IOException; 32 import java.util.ArrayList; 33 import java.util.Arrays; 34 import java.util.HashMap; 35 import java.util.List; 36 import java.util.UUID; 37 import javax.annotation.Generated; 38 import org.junit.After; 39 import org.junit.AfterClass; 40 import org.junit.Assert; 41 import org.junit.Before; 42 import org.junit.BeforeClass; 43 import org.junit.Test; 44 45 @Generated("by gapic-generator-java") 46 public class SearchServiceClientTest { 47 private static MockSearchService mockSearchService; 48 private static MockServiceHelper mockServiceHelper; 49 private LocalChannelProvider channelProvider; 50 private SearchServiceClient client; 51 52 @BeforeClass startStaticServer()53 public static void startStaticServer() { 54 mockSearchService = new MockSearchService(); 55 mockServiceHelper = 56 new MockServiceHelper( 57 UUID.randomUUID().toString(), Arrays.<MockGrpcService>asList(mockSearchService)); 58 mockServiceHelper.start(); 59 } 60 61 @AfterClass stopServer()62 public static void stopServer() { 63 mockServiceHelper.stop(); 64 } 65 66 @Before setUp()67 public void setUp() throws IOException { 68 mockServiceHelper.reset(); 69 channelProvider = mockServiceHelper.createChannelProvider(); 70 SearchServiceSettings settings = 71 SearchServiceSettings.newBuilder() 72 .setTransportChannelProvider(channelProvider) 73 .setCredentialsProvider(NoCredentialsProvider.create()) 74 .build(); 75 client = SearchServiceClient.create(settings); 76 } 77 78 @After tearDown()79 public void tearDown() throws Exception { 80 client.close(); 81 } 82 83 @Test searchTest()84 public void searchTest() throws Exception { 85 SearchResponse.SearchResult responsesElement = SearchResponse.SearchResult.newBuilder().build(); 86 SearchResponse expectedResponse = 87 SearchResponse.newBuilder() 88 .setNextPageToken("") 89 .addAllResults(Arrays.asList(responsesElement)) 90 .build(); 91 mockSearchService.addResponse(expectedResponse); 92 93 SearchRequest request = 94 SearchRequest.newBuilder() 95 .setPlacement("placement1792938725") 96 .setBranch(BranchName.of("[PROJECT]", "[LOCATION]", "[CATALOG]", "[BRANCH]").toString()) 97 .setQuery("query107944136") 98 .setVisitorId("visitorId1880545833") 99 .setUserInfo(UserInfo.newBuilder().build()) 100 .setPageSize(883849137) 101 .setPageToken("pageToken873572522") 102 .setOffset(-1019779949) 103 .setFilter("filter-1274492040") 104 .setCanonicalFilter("canonicalFilter-722283124") 105 .setOrderBy("orderBy-1207110587") 106 .addAllFacetSpecs(new ArrayList<SearchRequest.FacetSpec>()) 107 .setDynamicFacetSpec(SearchRequest.DynamicFacetSpec.newBuilder().build()) 108 .setBoostSpec(SearchRequest.BoostSpec.newBuilder().build()) 109 .setQueryExpansionSpec(SearchRequest.QueryExpansionSpec.newBuilder().build()) 110 .addAllVariantRollupKeys(new ArrayList<String>()) 111 .addAllPageCategories(new ArrayList<String>()) 112 .setPersonalizationSpec(SearchRequest.PersonalizationSpec.newBuilder().build()) 113 .putAllLabels(new HashMap<String, String>()) 114 .setSpellCorrectionSpec(SearchRequest.SpellCorrectionSpec.newBuilder().build()) 115 .setEntity("entity-1298275357") 116 .build(); 117 118 SearchPagedResponse pagedListResponse = client.search(request); 119 120 List<SearchResponse.SearchResult> resources = 121 Lists.newArrayList(pagedListResponse.iterateAll()); 122 123 Assert.assertEquals(1, resources.size()); 124 Assert.assertEquals(expectedResponse.getResultsList().get(0), resources.get(0)); 125 126 List<AbstractMessage> actualRequests = mockSearchService.getRequests(); 127 Assert.assertEquals(1, actualRequests.size()); 128 SearchRequest actualRequest = ((SearchRequest) actualRequests.get(0)); 129 130 Assert.assertEquals(request.getPlacement(), actualRequest.getPlacement()); 131 Assert.assertEquals(request.getBranch(), actualRequest.getBranch()); 132 Assert.assertEquals(request.getQuery(), actualRequest.getQuery()); 133 Assert.assertEquals(request.getVisitorId(), actualRequest.getVisitorId()); 134 Assert.assertEquals(request.getUserInfo(), actualRequest.getUserInfo()); 135 Assert.assertEquals(request.getPageSize(), actualRequest.getPageSize()); 136 Assert.assertEquals(request.getPageToken(), actualRequest.getPageToken()); 137 Assert.assertEquals(request.getOffset(), actualRequest.getOffset()); 138 Assert.assertEquals(request.getFilter(), actualRequest.getFilter()); 139 Assert.assertEquals(request.getCanonicalFilter(), actualRequest.getCanonicalFilter()); 140 Assert.assertEquals(request.getOrderBy(), actualRequest.getOrderBy()); 141 Assert.assertEquals(request.getFacetSpecsList(), actualRequest.getFacetSpecsList()); 142 Assert.assertEquals(request.getDynamicFacetSpec(), actualRequest.getDynamicFacetSpec()); 143 Assert.assertEquals(request.getBoostSpec(), actualRequest.getBoostSpec()); 144 Assert.assertEquals(request.getQueryExpansionSpec(), actualRequest.getQueryExpansionSpec()); 145 Assert.assertEquals( 146 request.getVariantRollupKeysList(), actualRequest.getVariantRollupKeysList()); 147 Assert.assertEquals(request.getPageCategoriesList(), actualRequest.getPageCategoriesList()); 148 Assert.assertEquals(request.getSearchMode(), actualRequest.getSearchMode()); 149 Assert.assertEquals(request.getPersonalizationSpec(), actualRequest.getPersonalizationSpec()); 150 Assert.assertEquals(request.getLabelsMap(), actualRequest.getLabelsMap()); 151 Assert.assertEquals(request.getSpellCorrectionSpec(), actualRequest.getSpellCorrectionSpec()); 152 Assert.assertEquals(request.getEntity(), actualRequest.getEntity()); 153 Assert.assertTrue( 154 channelProvider.isHeaderSent( 155 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 156 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 157 } 158 159 @Test searchExceptionTest()160 public void searchExceptionTest() throws Exception { 161 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 162 mockSearchService.addException(exception); 163 164 try { 165 SearchRequest request = 166 SearchRequest.newBuilder() 167 .setPlacement("placement1792938725") 168 .setBranch( 169 BranchName.of("[PROJECT]", "[LOCATION]", "[CATALOG]", "[BRANCH]").toString()) 170 .setQuery("query107944136") 171 .setVisitorId("visitorId1880545833") 172 .setUserInfo(UserInfo.newBuilder().build()) 173 .setPageSize(883849137) 174 .setPageToken("pageToken873572522") 175 .setOffset(-1019779949) 176 .setFilter("filter-1274492040") 177 .setCanonicalFilter("canonicalFilter-722283124") 178 .setOrderBy("orderBy-1207110587") 179 .addAllFacetSpecs(new ArrayList<SearchRequest.FacetSpec>()) 180 .setDynamicFacetSpec(SearchRequest.DynamicFacetSpec.newBuilder().build()) 181 .setBoostSpec(SearchRequest.BoostSpec.newBuilder().build()) 182 .setQueryExpansionSpec(SearchRequest.QueryExpansionSpec.newBuilder().build()) 183 .addAllVariantRollupKeys(new ArrayList<String>()) 184 .addAllPageCategories(new ArrayList<String>()) 185 .setPersonalizationSpec(SearchRequest.PersonalizationSpec.newBuilder().build()) 186 .putAllLabels(new HashMap<String, String>()) 187 .setSpellCorrectionSpec(SearchRequest.SpellCorrectionSpec.newBuilder().build()) 188 .setEntity("entity-1298275357") 189 .build(); 190 client.search(request); 191 Assert.fail("No exception raised"); 192 } catch (InvalidArgumentException e) { 193 // Expected exception. 194 } 195 } 196 } 197