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.appengine.v1; 18 19 import static com.google.appengine.v1.ServicesClient.ListServicesPagedResponse; 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.appengine.v1.stub.HttpJsonServicesStub; 31 import com.google.common.collect.Lists; 32 import com.google.longrunning.Operation; 33 import com.google.protobuf.Any; 34 import com.google.protobuf.Empty; 35 import com.google.protobuf.FieldMask; 36 import java.io.IOException; 37 import java.util.Arrays; 38 import java.util.HashMap; 39 import java.util.List; 40 import java.util.concurrent.ExecutionException; 41 import javax.annotation.Generated; 42 import org.junit.After; 43 import org.junit.AfterClass; 44 import org.junit.Assert; 45 import org.junit.Before; 46 import org.junit.BeforeClass; 47 import org.junit.Test; 48 49 @Generated("by gapic-generator-java") 50 public class ServicesClientHttpJsonTest { 51 private static MockHttpService mockService; 52 private static ServicesClient client; 53 54 @BeforeClass startStaticServer()55 public static void startStaticServer() throws IOException { 56 mockService = 57 new MockHttpService( 58 HttpJsonServicesStub.getMethodDescriptors(), ServicesSettings.getDefaultEndpoint()); 59 ServicesSettings settings = 60 ServicesSettings.newHttpJsonBuilder() 61 .setTransportChannelProvider( 62 ServicesSettings.defaultHttpJsonTransportProviderBuilder() 63 .setHttpTransport(mockService) 64 .build()) 65 .setCredentialsProvider(NoCredentialsProvider.create()) 66 .build(); 67 client = ServicesClient.create(settings); 68 } 69 70 @AfterClass stopServer()71 public static void stopServer() { 72 client.close(); 73 } 74 75 @Before setUp()76 public void setUp() {} 77 78 @After tearDown()79 public void tearDown() throws Exception { 80 mockService.reset(); 81 } 82 83 @Test listServicesTest()84 public void listServicesTest() throws Exception { 85 Service responsesElement = Service.newBuilder().build(); 86 ListServicesResponse expectedResponse = 87 ListServicesResponse.newBuilder() 88 .setNextPageToken("") 89 .addAllServices(Arrays.asList(responsesElement)) 90 .build(); 91 mockService.addResponse(expectedResponse); 92 93 ListServicesRequest request = 94 ListServicesRequest.newBuilder() 95 .setParent("apps/app-3559") 96 .setPageSize(883849137) 97 .setPageToken("pageToken873572522") 98 .build(); 99 100 ListServicesPagedResponse pagedListResponse = client.listServices(request); 101 102 List<Service> resources = Lists.newArrayList(pagedListResponse.iterateAll()); 103 104 Assert.assertEquals(1, resources.size()); 105 Assert.assertEquals(expectedResponse.getServicesList().get(0), resources.get(0)); 106 107 List<String> actualRequests = mockService.getRequestPaths(); 108 Assert.assertEquals(1, actualRequests.size()); 109 110 String apiClientHeaderKey = 111 mockService 112 .getRequestHeaders() 113 .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) 114 .iterator() 115 .next(); 116 Assert.assertTrue( 117 GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() 118 .matcher(apiClientHeaderKey) 119 .matches()); 120 } 121 122 @Test listServicesExceptionTest()123 public void listServicesExceptionTest() throws Exception { 124 ApiException exception = 125 ApiExceptionFactory.createException( 126 new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); 127 mockService.addException(exception); 128 129 try { 130 ListServicesRequest request = 131 ListServicesRequest.newBuilder() 132 .setParent("apps/app-3559") 133 .setPageSize(883849137) 134 .setPageToken("pageToken873572522") 135 .build(); 136 client.listServices(request); 137 Assert.fail("No exception raised"); 138 } catch (InvalidArgumentException e) { 139 // Expected exception. 140 } 141 } 142 143 @Test getServiceTest()144 public void getServiceTest() throws Exception { 145 Service expectedResponse = 146 Service.newBuilder() 147 .setName("name3373707") 148 .setId("id3355") 149 .setSplit(TrafficSplit.newBuilder().build()) 150 .putAllLabels(new HashMap<String, String>()) 151 .setNetworkSettings(NetworkSettings.newBuilder().build()) 152 .build(); 153 mockService.addResponse(expectedResponse); 154 155 GetServiceRequest request = 156 GetServiceRequest.newBuilder().setName("apps/app-9760/services/service-9760").build(); 157 158 Service actualResponse = client.getService(request); 159 Assert.assertEquals(expectedResponse, actualResponse); 160 161 List<String> actualRequests = mockService.getRequestPaths(); 162 Assert.assertEquals(1, actualRequests.size()); 163 164 String apiClientHeaderKey = 165 mockService 166 .getRequestHeaders() 167 .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) 168 .iterator() 169 .next(); 170 Assert.assertTrue( 171 GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() 172 .matcher(apiClientHeaderKey) 173 .matches()); 174 } 175 176 @Test getServiceExceptionTest()177 public void getServiceExceptionTest() throws Exception { 178 ApiException exception = 179 ApiExceptionFactory.createException( 180 new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); 181 mockService.addException(exception); 182 183 try { 184 GetServiceRequest request = 185 GetServiceRequest.newBuilder().setName("apps/app-9760/services/service-9760").build(); 186 client.getService(request); 187 Assert.fail("No exception raised"); 188 } catch (InvalidArgumentException e) { 189 // Expected exception. 190 } 191 } 192 193 @Test updateServiceTest()194 public void updateServiceTest() throws Exception { 195 Service expectedResponse = 196 Service.newBuilder() 197 .setName("name3373707") 198 .setId("id3355") 199 .setSplit(TrafficSplit.newBuilder().build()) 200 .putAllLabels(new HashMap<String, String>()) 201 .setNetworkSettings(NetworkSettings.newBuilder().build()) 202 .build(); 203 Operation resultOperation = 204 Operation.newBuilder() 205 .setName("updateServiceTest") 206 .setDone(true) 207 .setResponse(Any.pack(expectedResponse)) 208 .build(); 209 mockService.addResponse(resultOperation); 210 211 UpdateServiceRequest request = 212 UpdateServiceRequest.newBuilder() 213 .setName("apps/app-9760/services/service-9760") 214 .setService(Service.newBuilder().build()) 215 .setUpdateMask(FieldMask.newBuilder().build()) 216 .setMigrateTraffic(true) 217 .build(); 218 219 Service actualResponse = client.updateServiceAsync(request).get(); 220 Assert.assertEquals(expectedResponse, actualResponse); 221 222 List<String> actualRequests = mockService.getRequestPaths(); 223 Assert.assertEquals(1, actualRequests.size()); 224 225 String apiClientHeaderKey = 226 mockService 227 .getRequestHeaders() 228 .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) 229 .iterator() 230 .next(); 231 Assert.assertTrue( 232 GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() 233 .matcher(apiClientHeaderKey) 234 .matches()); 235 } 236 237 @Test updateServiceExceptionTest()238 public void updateServiceExceptionTest() throws Exception { 239 ApiException exception = 240 ApiExceptionFactory.createException( 241 new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); 242 mockService.addException(exception); 243 244 try { 245 UpdateServiceRequest request = 246 UpdateServiceRequest.newBuilder() 247 .setName("apps/app-9760/services/service-9760") 248 .setService(Service.newBuilder().build()) 249 .setUpdateMask(FieldMask.newBuilder().build()) 250 .setMigrateTraffic(true) 251 .build(); 252 client.updateServiceAsync(request).get(); 253 Assert.fail("No exception raised"); 254 } catch (ExecutionException e) { 255 } 256 } 257 258 @Test deleteServiceTest()259 public void deleteServiceTest() throws Exception { 260 Empty expectedResponse = Empty.newBuilder().build(); 261 Operation resultOperation = 262 Operation.newBuilder() 263 .setName("deleteServiceTest") 264 .setDone(true) 265 .setResponse(Any.pack(expectedResponse)) 266 .build(); 267 mockService.addResponse(resultOperation); 268 269 DeleteServiceRequest request = 270 DeleteServiceRequest.newBuilder().setName("apps/app-9760/services/service-9760").build(); 271 272 client.deleteServiceAsync(request).get(); 273 274 List<String> actualRequests = mockService.getRequestPaths(); 275 Assert.assertEquals(1, actualRequests.size()); 276 277 String apiClientHeaderKey = 278 mockService 279 .getRequestHeaders() 280 .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) 281 .iterator() 282 .next(); 283 Assert.assertTrue( 284 GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() 285 .matcher(apiClientHeaderKey) 286 .matches()); 287 } 288 289 @Test deleteServiceExceptionTest()290 public void deleteServiceExceptionTest() throws Exception { 291 ApiException exception = 292 ApiExceptionFactory.createException( 293 new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); 294 mockService.addException(exception); 295 296 try { 297 DeleteServiceRequest request = 298 DeleteServiceRequest.newBuilder().setName("apps/app-9760/services/service-9760").build(); 299 client.deleteServiceAsync(request).get(); 300 Assert.fail("No exception raised"); 301 } catch (ExecutionException e) { 302 } 303 } 304 } 305