2929
3030import com .google .api .client .googleapis .util .Utils ;
3131import com .google .api .client .http .HttpRequest ;
32+ import com .google .api .client .http .HttpRequestFactory ;
3233import com .google .api .client .http .HttpResponse ;
3334import com .google .api .client .http .HttpResponseInterceptor ;
3435import com .google .api .client .json .JsonParser ;
4344import com .google .firebase .FirebaseOptions ;
4445import com .google .firebase .TestOnlyImplFirebaseTrampolines ;
4546import com .google .firebase .auth .MockGoogleCredentials ;
47+ import com .google .firebase .internal .TestApiClientUtils ;
4648import com .google .firebase .testing .MultiRequestMockHttpTransport ;
4749import java .io .ByteArrayOutputStream ;
4850import java .io .IOException ;
@@ -370,7 +372,7 @@ public void listIosAppsAsyncMultiplePages() throws Exception {
370372 MockLowLevelHttpResponse secondRpcResponse = new MockLowLevelHttpResponse ();
371373 secondRpcResponse .setContent (LIST_IOS_APPS_PAGE_2_RESPONSE );
372374 serviceImpl = initServiceImpl (
373- ImmutableList .< MockLowLevelHttpResponse > of (firstRpcResponse , secondRpcResponse ),
375+ ImmutableList .of (firstRpcResponse , secondRpcResponse ),
374376 interceptor );
375377
376378 List <IosApp > iosAppList = serviceImpl .listIosAppsAsync (PROJECT_ID ).get ();
@@ -400,7 +402,7 @@ public void createIosApp() throws Exception {
400402 MockLowLevelHttpResponse thirdRpcResponse = new MockLowLevelHttpResponse ();
401403 thirdRpcResponse .setContent (CREATE_IOS_GET_OPERATION_ATTEMPT_2_RESPONSE );
402404 serviceImpl = initServiceImpl (
403- ImmutableList .< MockLowLevelHttpResponse > of (
405+ ImmutableList .of (
404406 firstRpcResponse , secondRpcResponse , thirdRpcResponse ),
405407 interceptor );
406408
@@ -624,7 +626,7 @@ public void listAndroidAppsMultiplePages() throws Exception {
624626 MockLowLevelHttpResponse secondRpcResponse = new MockLowLevelHttpResponse ();
625627 secondRpcResponse .setContent (LIST_ANDROID_APPS_PAGE_2_RESPONSE );
626628 serviceImpl = initServiceImpl (
627- ImmutableList .< MockLowLevelHttpResponse > of (firstRpcResponse , secondRpcResponse ),
629+ ImmutableList .of (firstRpcResponse , secondRpcResponse ),
628630 interceptor );
629631
630632 List <AndroidApp > androidAppList = serviceImpl .listAndroidApps (PROJECT_ID );
@@ -652,7 +654,7 @@ public void listAndroidAppsAsyncMultiplePages() throws Exception {
652654 MockLowLevelHttpResponse secondRpcResponse = new MockLowLevelHttpResponse ();
653655 secondRpcResponse .setContent (LIST_ANDROID_APPS_PAGE_2_RESPONSE );
654656 serviceImpl = initServiceImpl (
655- ImmutableList .< MockLowLevelHttpResponse > of (firstRpcResponse , secondRpcResponse ),
657+ ImmutableList .of (firstRpcResponse , secondRpcResponse ),
656658 interceptor );
657659
658660 List <AndroidApp > androidAppList = serviceImpl .listAndroidAppsAsync (PROJECT_ID ).get ();
@@ -682,7 +684,7 @@ public void createAndroidApp() throws Exception {
682684 MockLowLevelHttpResponse thirdRpcResponse = new MockLowLevelHttpResponse ();
683685 thirdRpcResponse .setContent (CREATE_ANDROID_GET_OPERATION_ATTEMPT_2_RESPONSE );
684686 serviceImpl = initServiceImpl (
685- ImmutableList .< MockLowLevelHttpResponse > of (
687+ ImmutableList .of (
686688 firstRpcResponse , secondRpcResponse , thirdRpcResponse ),
687689 interceptor );
688690
@@ -714,7 +716,7 @@ public void createAndroidAppAsync() throws Exception {
714716 MockLowLevelHttpResponse thirdRpcResponse = new MockLowLevelHttpResponse ();
715717 thirdRpcResponse .setContent (CREATE_ANDROID_GET_OPERATION_ATTEMPT_2_RESPONSE );
716718 serviceImpl = initServiceImpl (
717- ImmutableList .< MockLowLevelHttpResponse > of (
719+ ImmutableList .of (
718720 firstRpcResponse , secondRpcResponse , thirdRpcResponse ),
719721 interceptor );
720722
@@ -915,10 +917,48 @@ public void deleteShaCertificateAsync() throws Exception {
915917 checkRequestHeader (expectedUrl , HttpMethod .DELETE );
916918 }
917919
920+ @ Test
921+ public void testAuthAndRetriesSupport () {
922+ FirebaseOptions options = new FirebaseOptions .Builder ()
923+ .setCredentials (new MockGoogleCredentials ("test-token" ))
924+ .setProjectId (PROJECT_ID )
925+ .build ();
926+ FirebaseApp app = FirebaseApp .initializeApp (options );
927+
928+ FirebaseProjectManagementServiceImpl serviceImpl =
929+ new FirebaseProjectManagementServiceImpl (app );
930+
931+ TestApiClientUtils .assertAuthAndRetrySupport (serviceImpl .getRequestFactory ());
932+ }
933+
934+ @ Test
935+ public void testHttpRetries () throws Exception {
936+ List <MockLowLevelHttpResponse > mockResponses = ImmutableList .of (
937+ firstRpcResponse .setStatusCode (503 ).setContent ("{}" ),
938+ new MockLowLevelHttpResponse ().setContent ("{}" ));
939+ MockHttpTransport transport = new MultiRequestMockHttpTransport (mockResponses );
940+ FirebaseOptions options = new FirebaseOptions .Builder ()
941+ .setCredentials (new MockGoogleCredentials ("test-token" ))
942+ .setProjectId (PROJECT_ID )
943+ .setHttpTransport (transport )
944+ .build ();
945+ FirebaseApp app = FirebaseApp .initializeApp (options );
946+ HttpRequestFactory requestFactory = TestApiClientUtils .delayBypassedRequestFactory (app );
947+ FirebaseProjectManagementServiceImpl serviceImpl = new FirebaseProjectManagementServiceImpl (
948+ app , new MockSleeper (), new MockScheduler (), requestFactory );
949+ serviceImpl .setInterceptor (interceptor );
950+
951+ serviceImpl .deleteShaCertificate (SHA1_RESOURCE_NAME );
952+
953+ String expectedUrl = String .format (
954+ "%s/v1beta1/%s" , FIREBASE_PROJECT_MANAGEMENT_URL , SHA1_RESOURCE_NAME );
955+ checkRequestHeader (expectedUrl , HttpMethod .DELETE );
956+ }
957+
918958 private static FirebaseProjectManagementServiceImpl initServiceImpl (
919959 MockLowLevelHttpResponse mockResponse ,
920960 MultiRequestTestResponseInterceptor interceptor ) {
921- return initServiceImpl (ImmutableList .< MockLowLevelHttpResponse > of (mockResponse ), interceptor );
961+ return initServiceImpl (ImmutableList .of (mockResponse ), interceptor );
922962 }
923963
924964 private static FirebaseProjectManagementServiceImpl initServiceImpl (
@@ -931,8 +971,9 @@ private static FirebaseProjectManagementServiceImpl initServiceImpl(
931971 .setHttpTransport (transport )
932972 .build ();
933973 FirebaseApp app = FirebaseApp .initializeApp (options );
934- FirebaseProjectManagementServiceImpl serviceImpl =
935- new FirebaseProjectManagementServiceImpl (app , new MockSleeper (), new MockScheduler ());
974+ HttpRequestFactory requestFactory = TestApiClientUtils .retryDisabledRequestFactory (app );
975+ FirebaseProjectManagementServiceImpl serviceImpl = new FirebaseProjectManagementServiceImpl (
976+ app , new MockSleeper (), new MockScheduler (), requestFactory );
936977 serviceImpl .setInterceptor (interceptor );
937978 return serviceImpl ;
938979 }
0 commit comments