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.HttpBody; 20 import com.google.api.gax.core.NoCredentialsProvider; 21 import com.google.api.gax.grpc.GaxGrpcProperties; 22 import com.google.api.gax.grpc.testing.LocalChannelProvider; 23 import com.google.api.gax.grpc.testing.MockGrpcService; 24 import com.google.api.gax.grpc.testing.MockServiceHelper; 25 import com.google.api.gax.rpc.ApiClientHeaderProvider; 26 import com.google.api.gax.rpc.InvalidArgumentException; 27 import com.google.api.gax.rpc.StatusCode; 28 import com.google.longrunning.Operation; 29 import com.google.protobuf.AbstractMessage; 30 import com.google.protobuf.Any; 31 import com.google.protobuf.ByteString; 32 import com.google.protobuf.Timestamp; 33 import com.google.rpc.Status; 34 import io.grpc.StatusRuntimeException; 35 import java.io.IOException; 36 import java.util.ArrayList; 37 import java.util.Arrays; 38 import java.util.HashMap; 39 import java.util.List; 40 import java.util.UUID; 41 import java.util.concurrent.ExecutionException; 42 import javax.annotation.Generated; 43 import org.junit.After; 44 import org.junit.AfterClass; 45 import org.junit.Assert; 46 import org.junit.Before; 47 import org.junit.BeforeClass; 48 import org.junit.Test; 49 50 @Generated("by gapic-generator-java") 51 public class UserEventServiceClientTest { 52 private static MockServiceHelper mockServiceHelper; 53 private static MockUserEventService mockUserEventService; 54 private LocalChannelProvider channelProvider; 55 private UserEventServiceClient client; 56 57 @BeforeClass startStaticServer()58 public static void startStaticServer() { 59 mockUserEventService = new MockUserEventService(); 60 mockServiceHelper = 61 new MockServiceHelper( 62 UUID.randomUUID().toString(), Arrays.<MockGrpcService>asList(mockUserEventService)); 63 mockServiceHelper.start(); 64 } 65 66 @AfterClass stopServer()67 public static void stopServer() { 68 mockServiceHelper.stop(); 69 } 70 71 @Before setUp()72 public void setUp() throws IOException { 73 mockServiceHelper.reset(); 74 channelProvider = mockServiceHelper.createChannelProvider(); 75 UserEventServiceSettings settings = 76 UserEventServiceSettings.newBuilder() 77 .setTransportChannelProvider(channelProvider) 78 .setCredentialsProvider(NoCredentialsProvider.create()) 79 .build(); 80 client = UserEventServiceClient.create(settings); 81 } 82 83 @After tearDown()84 public void tearDown() throws Exception { 85 client.close(); 86 } 87 88 @Test writeUserEventTest()89 public void writeUserEventTest() throws Exception { 90 UserEvent expectedResponse = 91 UserEvent.newBuilder() 92 .setEventType("eventType31430900") 93 .setVisitorId("visitorId1880545833") 94 .setSessionId("sessionId607796817") 95 .setEventTime(Timestamp.newBuilder().build()) 96 .addAllExperimentIds(new ArrayList<String>()) 97 .setAttributionToken("attributionToken104706234") 98 .addAllProductDetails(new ArrayList<ProductDetail>()) 99 .setCompletionDetail(CompletionDetail.newBuilder().build()) 100 .putAllAttributes(new HashMap<String, CustomAttribute>()) 101 .setCartId("cartId-1367589797") 102 .setPurchaseTransaction(PurchaseTransaction.newBuilder().build()) 103 .setSearchQuery("searchQuery-552137728") 104 .setFilter("filter-1274492040") 105 .setOrderBy("orderBy-1207110587") 106 .setOffset(-1019779949) 107 .addAllPageCategories(new ArrayList<String>()) 108 .setUserInfo(UserInfo.newBuilder().build()) 109 .setUri("uri116076") 110 .setReferrerUri("referrerUri348088525") 111 .setPageViewId("pageViewId1362499087") 112 .setEntity("entity-1298275357") 113 .build(); 114 mockUserEventService.addResponse(expectedResponse); 115 116 WriteUserEventRequest request = 117 WriteUserEventRequest.newBuilder() 118 .setParent("parent-995424086") 119 .setUserEvent(UserEvent.newBuilder().build()) 120 .setWriteAsync(true) 121 .build(); 122 123 UserEvent actualResponse = client.writeUserEvent(request); 124 Assert.assertEquals(expectedResponse, actualResponse); 125 126 List<AbstractMessage> actualRequests = mockUserEventService.getRequests(); 127 Assert.assertEquals(1, actualRequests.size()); 128 WriteUserEventRequest actualRequest = ((WriteUserEventRequest) actualRequests.get(0)); 129 130 Assert.assertEquals(request.getParent(), actualRequest.getParent()); 131 Assert.assertEquals(request.getUserEvent(), actualRequest.getUserEvent()); 132 Assert.assertEquals(request.getWriteAsync(), actualRequest.getWriteAsync()); 133 Assert.assertTrue( 134 channelProvider.isHeaderSent( 135 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 136 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 137 } 138 139 @Test writeUserEventExceptionTest()140 public void writeUserEventExceptionTest() throws Exception { 141 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 142 mockUserEventService.addException(exception); 143 144 try { 145 WriteUserEventRequest request = 146 WriteUserEventRequest.newBuilder() 147 .setParent("parent-995424086") 148 .setUserEvent(UserEvent.newBuilder().build()) 149 .setWriteAsync(true) 150 .build(); 151 client.writeUserEvent(request); 152 Assert.fail("No exception raised"); 153 } catch (InvalidArgumentException e) { 154 // Expected exception. 155 } 156 } 157 158 @Test collectUserEventTest()159 public void collectUserEventTest() throws Exception { 160 HttpBody expectedResponse = 161 HttpBody.newBuilder() 162 .setContentType("contentType-389131437") 163 .setData(ByteString.EMPTY) 164 .addAllExtensions(new ArrayList<Any>()) 165 .build(); 166 mockUserEventService.addResponse(expectedResponse); 167 168 CollectUserEventRequest request = 169 CollectUserEventRequest.newBuilder() 170 .setParent("parent-995424086") 171 .setUserEvent("userEvent315571599") 172 .setUri("uri116076") 173 .setEts(100772) 174 .setRawJson("rawJson985449776") 175 .build(); 176 177 HttpBody actualResponse = client.collectUserEvent(request); 178 Assert.assertEquals(expectedResponse, actualResponse); 179 180 List<AbstractMessage> actualRequests = mockUserEventService.getRequests(); 181 Assert.assertEquals(1, actualRequests.size()); 182 CollectUserEventRequest actualRequest = ((CollectUserEventRequest) actualRequests.get(0)); 183 184 Assert.assertEquals(request.getPrebuiltRule(), actualRequest.getPrebuiltRule()); 185 Assert.assertEquals(request.getParent(), actualRequest.getParent()); 186 Assert.assertEquals(request.getUserEvent(), actualRequest.getUserEvent()); 187 Assert.assertEquals(request.getUri(), actualRequest.getUri()); 188 Assert.assertEquals(request.getEts(), actualRequest.getEts()); 189 Assert.assertEquals(request.getRawJson(), actualRequest.getRawJson()); 190 Assert.assertTrue( 191 channelProvider.isHeaderSent( 192 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 193 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 194 } 195 196 @Test collectUserEventExceptionTest()197 public void collectUserEventExceptionTest() throws Exception { 198 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 199 mockUserEventService.addException(exception); 200 201 try { 202 CollectUserEventRequest request = 203 CollectUserEventRequest.newBuilder() 204 .setParent("parent-995424086") 205 .setUserEvent("userEvent315571599") 206 .setUri("uri116076") 207 .setEts(100772) 208 .setRawJson("rawJson985449776") 209 .build(); 210 client.collectUserEvent(request); 211 Assert.fail("No exception raised"); 212 } catch (InvalidArgumentException e) { 213 // Expected exception. 214 } 215 } 216 217 @Test purgeUserEventsTest()218 public void purgeUserEventsTest() throws Exception { 219 PurgeUserEventsResponse expectedResponse = 220 PurgeUserEventsResponse.newBuilder().setPurgedEventsCount(-310774833).build(); 221 Operation resultOperation = 222 Operation.newBuilder() 223 .setName("purgeUserEventsTest") 224 .setDone(true) 225 .setResponse(Any.pack(expectedResponse)) 226 .build(); 227 mockUserEventService.addResponse(resultOperation); 228 229 PurgeUserEventsRequest request = 230 PurgeUserEventsRequest.newBuilder() 231 .setParent(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString()) 232 .setFilter("filter-1274492040") 233 .setForce(true) 234 .build(); 235 236 PurgeUserEventsResponse actualResponse = client.purgeUserEventsAsync(request).get(); 237 Assert.assertEquals(expectedResponse, actualResponse); 238 239 List<AbstractMessage> actualRequests = mockUserEventService.getRequests(); 240 Assert.assertEquals(1, actualRequests.size()); 241 PurgeUserEventsRequest actualRequest = ((PurgeUserEventsRequest) actualRequests.get(0)); 242 243 Assert.assertEquals(request.getParent(), actualRequest.getParent()); 244 Assert.assertEquals(request.getFilter(), actualRequest.getFilter()); 245 Assert.assertEquals(request.getForce(), actualRequest.getForce()); 246 Assert.assertTrue( 247 channelProvider.isHeaderSent( 248 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 249 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 250 } 251 252 @Test purgeUserEventsExceptionTest()253 public void purgeUserEventsExceptionTest() throws Exception { 254 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 255 mockUserEventService.addException(exception); 256 257 try { 258 PurgeUserEventsRequest request = 259 PurgeUserEventsRequest.newBuilder() 260 .setParent(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString()) 261 .setFilter("filter-1274492040") 262 .setForce(true) 263 .build(); 264 client.purgeUserEventsAsync(request).get(); 265 Assert.fail("No exception raised"); 266 } catch (ExecutionException e) { 267 Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); 268 InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); 269 Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); 270 } 271 } 272 273 @Test importUserEventsTest()274 public void importUserEventsTest() throws Exception { 275 ImportUserEventsResponse expectedResponse = 276 ImportUserEventsResponse.newBuilder() 277 .addAllErrorSamples(new ArrayList<Status>()) 278 .setErrorsConfig(ImportErrorsConfig.newBuilder().build()) 279 .setImportSummary(UserEventImportSummary.newBuilder().build()) 280 .build(); 281 Operation resultOperation = 282 Operation.newBuilder() 283 .setName("importUserEventsTest") 284 .setDone(true) 285 .setResponse(Any.pack(expectedResponse)) 286 .build(); 287 mockUserEventService.addResponse(resultOperation); 288 289 ImportUserEventsRequest request = 290 ImportUserEventsRequest.newBuilder() 291 .setParent(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString()) 292 .setInputConfig(UserEventInputConfig.newBuilder().build()) 293 .setErrorsConfig(ImportErrorsConfig.newBuilder().build()) 294 .build(); 295 296 ImportUserEventsResponse actualResponse = client.importUserEventsAsync(request).get(); 297 Assert.assertEquals(expectedResponse, actualResponse); 298 299 List<AbstractMessage> actualRequests = mockUserEventService.getRequests(); 300 Assert.assertEquals(1, actualRequests.size()); 301 ImportUserEventsRequest actualRequest = ((ImportUserEventsRequest) actualRequests.get(0)); 302 303 Assert.assertEquals(request.getParent(), actualRequest.getParent()); 304 Assert.assertEquals(request.getInputConfig(), actualRequest.getInputConfig()); 305 Assert.assertEquals(request.getErrorsConfig(), actualRequest.getErrorsConfig()); 306 Assert.assertTrue( 307 channelProvider.isHeaderSent( 308 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 309 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 310 } 311 312 @Test importUserEventsExceptionTest()313 public void importUserEventsExceptionTest() throws Exception { 314 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 315 mockUserEventService.addException(exception); 316 317 try { 318 ImportUserEventsRequest request = 319 ImportUserEventsRequest.newBuilder() 320 .setParent(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString()) 321 .setInputConfig(UserEventInputConfig.newBuilder().build()) 322 .setErrorsConfig(ImportErrorsConfig.newBuilder().build()) 323 .build(); 324 client.importUserEventsAsync(request).get(); 325 Assert.fail("No exception raised"); 326 } catch (ExecutionException e) { 327 Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); 328 InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); 329 Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); 330 } 331 } 332 333 @Test rejoinUserEventsTest()334 public void rejoinUserEventsTest() throws Exception { 335 RejoinUserEventsResponse expectedResponse = 336 RejoinUserEventsResponse.newBuilder().setRejoinedUserEventsCount(-1152281574).build(); 337 Operation resultOperation = 338 Operation.newBuilder() 339 .setName("rejoinUserEventsTest") 340 .setDone(true) 341 .setResponse(Any.pack(expectedResponse)) 342 .build(); 343 mockUserEventService.addResponse(resultOperation); 344 345 RejoinUserEventsRequest request = 346 RejoinUserEventsRequest.newBuilder().setParent("parent-995424086").build(); 347 348 RejoinUserEventsResponse actualResponse = client.rejoinUserEventsAsync(request).get(); 349 Assert.assertEquals(expectedResponse, actualResponse); 350 351 List<AbstractMessage> actualRequests = mockUserEventService.getRequests(); 352 Assert.assertEquals(1, actualRequests.size()); 353 RejoinUserEventsRequest actualRequest = ((RejoinUserEventsRequest) actualRequests.get(0)); 354 355 Assert.assertEquals(request.getParent(), actualRequest.getParent()); 356 Assert.assertEquals(request.getUserEventRejoinScope(), actualRequest.getUserEventRejoinScope()); 357 Assert.assertTrue( 358 channelProvider.isHeaderSent( 359 ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), 360 GaxGrpcProperties.getDefaultApiClientHeaderPattern())); 361 } 362 363 @Test rejoinUserEventsExceptionTest()364 public void rejoinUserEventsExceptionTest() throws Exception { 365 StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); 366 mockUserEventService.addException(exception); 367 368 try { 369 RejoinUserEventsRequest request = 370 RejoinUserEventsRequest.newBuilder().setParent("parent-995424086").build(); 371 client.rejoinUserEventsAsync(request).get(); 372 Assert.fail("No exception raised"); 373 } catch (ExecutionException e) { 374 Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); 375 InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); 376 Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); 377 } 378 } 379 } 380