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.v2; 18 19 import static com.google.cloud.retail.v2.SearchServiceClient.SearchPagedResponse; 20 21 import com.google.api.gax.core.NoCredentialsProvider; 22 import com.google.api.gax.httpjson.GaxHttpJsonProperties; 23 import com.google.api.gax.httpjson.testing.MockHttpService; 24 import com.google.api.gax.rpc.ApiClientHeaderProvider; 25 import com.google.api.gax.rpc.ApiException; 26 import com.google.api.gax.rpc.ApiExceptionFactory; 27 import com.google.api.gax.rpc.InvalidArgumentException; 28 import com.google.api.gax.rpc.StatusCode; 29 import com.google.api.gax.rpc.testing.FakeStatusCode; 30 import com.google.cloud.retail.v2.stub.HttpJsonSearchServiceStub; 31 import com.google.common.collect.Lists; 32 import java.io.IOException; 33 import java.util.ArrayList; 34 import java.util.Arrays; 35 import java.util.HashMap; 36 import java.util.List; 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 SearchServiceClientHttpJsonTest { 47 private static MockHttpService mockService; 48 private static SearchServiceClient client; 49 50 @BeforeClass startStaticServer()51 public static void startStaticServer() throws IOException { 52 mockService = 53 new MockHttpService( 54 HttpJsonSearchServiceStub.getMethodDescriptors(), 55 SearchServiceSettings.getDefaultEndpoint()); 56 SearchServiceSettings settings = 57 SearchServiceSettings.newHttpJsonBuilder() 58 .setTransportChannelProvider( 59 SearchServiceSettings.defaultHttpJsonTransportProviderBuilder() 60 .setHttpTransport(mockService) 61 .build()) 62 .setCredentialsProvider(NoCredentialsProvider.create()) 63 .build(); 64 client = SearchServiceClient.create(settings); 65 } 66 67 @AfterClass stopServer()68 public static void stopServer() { 69 client.close(); 70 } 71 72 @Before setUp()73 public void setUp() {} 74 75 @After tearDown()76 public void tearDown() throws Exception { 77 mockService.reset(); 78 } 79 80 @Test searchTest()81 public void searchTest() throws Exception { 82 SearchResponse.SearchResult responsesElement = SearchResponse.SearchResult.newBuilder().build(); 83 SearchResponse expectedResponse = 84 SearchResponse.newBuilder() 85 .setNextPageToken("") 86 .addAllResults(Arrays.asList(responsesElement)) 87 .build(); 88 mockService.addResponse(expectedResponse); 89 90 SearchRequest request = 91 SearchRequest.newBuilder() 92 .setPlacement( 93 "projects/project-9512/locations/location-9512/catalogs/catalog-9512/placements/placement-9512") 94 .setBranch(BranchName.of("[PROJECT]", "[LOCATION]", "[CATALOG]", "[BRANCH]").toString()) 95 .setQuery("query107944136") 96 .setVisitorId("visitorId1880545833") 97 .setUserInfo(UserInfo.newBuilder().build()) 98 .setPageSize(883849137) 99 .setPageToken("pageToken873572522") 100 .setOffset(-1019779949) 101 .setFilter("filter-1274492040") 102 .setCanonicalFilter("canonicalFilter-722283124") 103 .setOrderBy("orderBy-1207110587") 104 .addAllFacetSpecs(new ArrayList<SearchRequest.FacetSpec>()) 105 .setDynamicFacetSpec(SearchRequest.DynamicFacetSpec.newBuilder().build()) 106 .setBoostSpec(SearchRequest.BoostSpec.newBuilder().build()) 107 .setQueryExpansionSpec(SearchRequest.QueryExpansionSpec.newBuilder().build()) 108 .addAllVariantRollupKeys(new ArrayList<String>()) 109 .addAllPageCategories(new ArrayList<String>()) 110 .setPersonalizationSpec(SearchRequest.PersonalizationSpec.newBuilder().build()) 111 .putAllLabels(new HashMap<String, String>()) 112 .setSpellCorrectionSpec(SearchRequest.SpellCorrectionSpec.newBuilder().build()) 113 .setEntity("entity-1298275357") 114 .build(); 115 116 SearchPagedResponse pagedListResponse = client.search(request); 117 118 List<SearchResponse.SearchResult> resources = 119 Lists.newArrayList(pagedListResponse.iterateAll()); 120 121 Assert.assertEquals(1, resources.size()); 122 Assert.assertEquals(expectedResponse.getResultsList().get(0), resources.get(0)); 123 124 List<String> actualRequests = mockService.getRequestPaths(); 125 Assert.assertEquals(1, actualRequests.size()); 126 127 String apiClientHeaderKey = 128 mockService 129 .getRequestHeaders() 130 .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) 131 .iterator() 132 .next(); 133 Assert.assertTrue( 134 GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() 135 .matcher(apiClientHeaderKey) 136 .matches()); 137 } 138 139 @Test searchExceptionTest()140 public void searchExceptionTest() throws Exception { 141 ApiException exception = 142 ApiExceptionFactory.createException( 143 new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); 144 mockService.addException(exception); 145 146 try { 147 SearchRequest request = 148 SearchRequest.newBuilder() 149 .setPlacement( 150 "projects/project-9512/locations/location-9512/catalogs/catalog-9512/placements/placement-9512") 151 .setBranch( 152 BranchName.of("[PROJECT]", "[LOCATION]", "[CATALOG]", "[BRANCH]").toString()) 153 .setQuery("query107944136") 154 .setVisitorId("visitorId1880545833") 155 .setUserInfo(UserInfo.newBuilder().build()) 156 .setPageSize(883849137) 157 .setPageToken("pageToken873572522") 158 .setOffset(-1019779949) 159 .setFilter("filter-1274492040") 160 .setCanonicalFilter("canonicalFilter-722283124") 161 .setOrderBy("orderBy-1207110587") 162 .addAllFacetSpecs(new ArrayList<SearchRequest.FacetSpec>()) 163 .setDynamicFacetSpec(SearchRequest.DynamicFacetSpec.newBuilder().build()) 164 .setBoostSpec(SearchRequest.BoostSpec.newBuilder().build()) 165 .setQueryExpansionSpec(SearchRequest.QueryExpansionSpec.newBuilder().build()) 166 .addAllVariantRollupKeys(new ArrayList<String>()) 167 .addAllPageCategories(new ArrayList<String>()) 168 .setPersonalizationSpec(SearchRequest.PersonalizationSpec.newBuilder().build()) 169 .putAllLabels(new HashMap<String, String>()) 170 .setSpellCorrectionSpec(SearchRequest.SpellCorrectionSpec.newBuilder().build()) 171 .setEntity("entity-1298275357") 172 .build(); 173 client.search(request); 174 Assert.fail("No exception raised"); 175 } catch (InvalidArgumentException e) { 176 // Expected exception. 177 } 178 } 179 } 180