• 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.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