Skip to content

Commit 34a6b0a

Browse files
committed
Merge branch 'master' into v7
2 parents a0f29dd + 6457976 commit 34a6b0a

File tree

5 files changed

+64
-53
lines changed

5 files changed

+64
-53
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
<groupId>com.google.firebase</groupId>
2121
<artifactId>firebase-admin</artifactId>
22-
<version>6.12.1-SNAPSHOT</version>
22+
<version>6.12.2-SNAPSHOT</version>
2323
<packaging>jar</packaging>
2424

2525
<name>firebase-admin</name>

src/main/java/com/google/firebase/auth/FirebaseAuth.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,7 @@ private FirebaseAuth(Builder builder) {
7575
this.tokenFactory = threadSafeMemoize(builder.tokenFactory);
7676
this.idTokenVerifier = threadSafeMemoize(builder.idTokenVerifier);
7777
this.cookieVerifier = threadSafeMemoize(builder.cookieVerifier);
78-
this.userManager = threadSafeMemoize(new Supplier<FirebaseUserManager>() {
79-
@Override
80-
public FirebaseUserManager get() {
81-
return new FirebaseUserManager(firebaseApp);
82-
}
83-
});
78+
this.userManager = threadSafeMemoize(builder.userManager);
8479
this.jsonFactory = firebaseApp.getOptions().getJsonFactory();
8580
}
8681

@@ -1109,10 +1104,10 @@ protected String execute() throws FirebaseAuthException {
11091104
}
11101105

11111106
private <T> Supplier<T> threadSafeMemoize(final Supplier<T> supplier) {
1112-
checkNotNull(supplier);
11131107
return Suppliers.memoize(new Supplier<T>() {
11141108
@Override
11151109
public T get() {
1110+
checkNotNull(supplier);
11161111
synchronized (lock) {
11171112
checkNotDestroyed();
11181113
return supplier.get();
@@ -1155,6 +1150,12 @@ public FirebaseTokenVerifier get() {
11551150
return FirebaseTokenUtils.createSessionCookieVerifier(app, Clock.SYSTEM);
11561151
}
11571152
})
1153+
.setUserManager(new Supplier<FirebaseUserManager>() {
1154+
@Override
1155+
public FirebaseUserManager get() {
1156+
return new FirebaseUserManager(app);
1157+
}
1158+
})
11581159
.build();
11591160
}
11601161

@@ -1168,6 +1169,7 @@ static class Builder {
11681169
private Supplier<FirebaseTokenFactory> tokenFactory;
11691170
private Supplier<? extends FirebaseTokenVerifier> idTokenVerifier;
11701171
private Supplier<? extends FirebaseTokenVerifier> cookieVerifier;
1172+
private Supplier<FirebaseUserManager> userManager;
11711173

11721174
private Builder() { }
11731175

@@ -1191,6 +1193,11 @@ Builder setCookieVerifier(Supplier<? extends FirebaseTokenVerifier> cookieVerifi
11911193
return this;
11921194
}
11931195

1196+
Builder setUserManager(Supplier<FirebaseUserManager> userManager) {
1197+
this.userManager = userManager;
1198+
return this;
1199+
}
1200+
11941201
FirebaseAuth build() {
11951202
return new FirebaseAuth(this);
11961203
}

src/main/java/com/google/firebase/auth/FirebaseUserManager.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import com.google.api.client.http.HttpResponse;
2727
import com.google.api.client.http.HttpResponseException;
2828
import com.google.api.client.http.HttpResponseInterceptor;
29-
import com.google.api.client.http.HttpTransport;
3029
import com.google.api.client.http.json.JsonHttpContent;
3130
import com.google.api.client.json.GenericJson;
3231
import com.google.api.client.json.JsonFactory;
@@ -45,7 +44,7 @@
4544

4645
import com.google.firebase.auth.internal.HttpErrorResponse;
4746
import com.google.firebase.auth.internal.UploadAccountResponse;
48-
import com.google.firebase.internal.FirebaseRequestInitializer;
47+
import com.google.firebase.internal.ApiClientUtils;
4948
import com.google.firebase.internal.NonNull;
5049
import com.google.firebase.internal.Nullable;
5150
import com.google.firebase.internal.SdkUtils;
@@ -111,6 +110,10 @@ class FirebaseUserManager {
111110
* @param app A non-null {@link FirebaseApp}.
112111
*/
113112
FirebaseUserManager(@NonNull FirebaseApp app) {
113+
this(app, null);
114+
}
115+
116+
FirebaseUserManager(@NonNull FirebaseApp app, @Nullable HttpRequestFactory requestFactory) {
114117
checkNotNull(app, "FirebaseApp must not be null");
115118
String projectId = ImplFirebaseTrampolines.getProjectId(app);
116119
checkArgument(!Strings.isNullOrEmpty(projectId),
@@ -119,8 +122,12 @@ class FirebaseUserManager {
119122
+ "set the project ID via the GOOGLE_CLOUD_PROJECT environment variable.");
120123
this.baseUrl = String.format(ID_TOOLKIT_URL, projectId);
121124
this.jsonFactory = app.getOptions().getJsonFactory();
122-
HttpTransport transport = app.getOptions().getHttpTransport();
123-
this.requestFactory = transport.createRequestFactory(new FirebaseRequestInitializer(app));
125+
126+
if (requestFactory == null) {
127+
requestFactory = ApiClientUtils.newAuthorizedRequestFactory(app);
128+
}
129+
130+
this.requestFactory = requestFactory;
124131
}
125132

126133
@VisibleForTesting

src/test/java/com/google/firebase/auth/FirebaseAuthTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -429,11 +429,11 @@ private FirebaseAuth getAuthForIdTokenVerification(FirebaseTokenVerifier tokenVe
429429
private FirebaseAuth getAuthForIdTokenVerification(
430430
Supplier<? extends FirebaseTokenVerifier> tokenVerifierSupplier) {
431431
FirebaseApp app = FirebaseApp.initializeApp(firebaseOptions);
432+
FirebaseUserManager userManager = new FirebaseUserManager(app);
432433
return FirebaseAuth.builder()
433434
.setFirebaseApp(app)
434-
.setTokenFactory(Suppliers.<FirebaseTokenFactory>ofInstance(null))
435435
.setIdTokenVerifier(tokenVerifierSupplier)
436-
.setCookieVerifier(Suppliers.<FirebaseTokenVerifier>ofInstance(null))
436+
.setUserManager(Suppliers.ofInstance(userManager))
437437
.build();
438438
}
439439

@@ -444,11 +444,11 @@ private FirebaseAuth getAuthForSessionCookieVerification(FirebaseTokenVerifier t
444444
private FirebaseAuth getAuthForSessionCookieVerification(
445445
Supplier<? extends FirebaseTokenVerifier> tokenVerifierSupplier) {
446446
FirebaseApp app = FirebaseApp.initializeApp(firebaseOptions);
447+
FirebaseUserManager userManager = new FirebaseUserManager(app);
447448
return FirebaseAuth.builder()
448449
.setFirebaseApp(app)
449-
.setTokenFactory(Suppliers.<FirebaseTokenFactory>ofInstance(null))
450-
.setIdTokenVerifier(Suppliers.<FirebaseTokenVerifier>ofInstance(null))
451450
.setCookieVerifier(tokenVerifierSupplier)
451+
.setUserManager(Suppliers.ofInstance(userManager))
452452
.build();
453453
}
454454

src/test/java/com/google/firebase/auth/FirebaseUserManagerTest.java

Lines changed: 34 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.google.api.client.testing.http.MockHttpTransport;
3434
import com.google.api.client.testing.http.MockLowLevelHttpResponse;
3535
import com.google.auth.oauth2.GoogleCredentials;
36+
import com.google.common.base.Supplier;
3637
import com.google.common.collect.ImmutableList;
3738
import com.google.common.collect.ImmutableMap;
3839
import com.google.common.collect.Iterables;
@@ -550,14 +551,7 @@ public void call(FirebaseAuth auth) throws Exception {
550551
.build();
551552

552553
MockLowLevelHttpResponse response = new MockLowLevelHttpResponse();
553-
MockHttpTransport transport = new MockHttpTransport.Builder()
554-
.setLowLevelHttpResponse(response)
555-
.build();
556-
FirebaseApp.initializeApp(new FirebaseOptions.Builder()
557-
.setCredentials(credentials)
558-
.setProjectId("test-project-id")
559-
.setHttpTransport(transport)
560-
.build());
554+
FirebaseAuth auth = getRetryDisabledAuth(response);
561555

562556
// Test for common HTTP error codes
563557
for (int code : ImmutableList.of(302, 400, 401, 404, 500)) {
@@ -566,7 +560,7 @@ public void call(FirebaseAuth auth) throws Exception {
566560
response.setContent("{}");
567561
response.setStatusCode(code);
568562
try {
569-
operation.call(FirebaseAuth.getInstance());
563+
operation.call(auth);
570564
fail("No error thrown for HTTP error: " + code);
571565
} catch (ExecutionException e) {
572566
assertTrue(e.getCause() instanceof FirebaseAuthException);
@@ -584,7 +578,7 @@ public void call(FirebaseAuth auth) throws Exception {
584578
response.setContent("{\"error\": {\"message\": \"USER_NOT_FOUND\"}}");
585579
response.setStatusCode(500);
586580
try {
587-
operation.call(FirebaseAuth.getInstance());
581+
operation.call(auth);
588582
fail("No error thrown for HTTP error");
589583
} catch (ExecutionException e) {
590584
assertTrue(e.getCause().toString(), e.getCause() instanceof FirebaseAuthException);
@@ -615,16 +609,9 @@ public void testGetUserUnexpectedHttpError() throws Exception {
615609
MockLowLevelHttpResponse response = new MockLowLevelHttpResponse();
616610
response.setContent("{\"not\" json}");
617611
response.setStatusCode(500);
618-
MockHttpTransport transport = new MockHttpTransport.Builder()
619-
.setLowLevelHttpResponse(response)
620-
.build();
621-
FirebaseApp.initializeApp(new FirebaseOptions.Builder()
622-
.setCredentials(credentials)
623-
.setProjectId("test-project-id")
624-
.setHttpTransport(transport)
625-
.build());
612+
FirebaseAuth auth = getRetryDisabledAuth(response);
626613
try {
627-
FirebaseAuth.getInstance().getUserAsync("testuser").get();
614+
auth.getUserAsync("testuser").get();
628615
fail("No error thrown for JSON error");
629616
} catch (ExecutionException e) {
630617
assertTrue(e.getCause() instanceof FirebaseAuthException);
@@ -1173,15 +1160,10 @@ public void testGenerateSignInWithEmailLinkWithSettings() throws Exception {
11731160

11741161
@Test
11751162
public void testHttpErrorWithCode() {
1176-
FirebaseApp.initializeApp(new FirebaseOptions.Builder()
1177-
.setCredentials(credentials)
1178-
.setHttpTransport(new MultiRequestMockHttpTransport(ImmutableList.of(
1179-
new MockLowLevelHttpResponse()
1180-
.setContent("{\"error\": {\"message\": \"UNAUTHORIZED_DOMAIN\"}}")
1181-
.setStatusCode(500))))
1182-
.setProjectId("test-project-id")
1183-
.build());
1184-
FirebaseAuth auth = FirebaseAuth.getInstance();
1163+
MockLowLevelHttpResponse response = new MockLowLevelHttpResponse()
1164+
.setContent("{\"error\": {\"message\": \"UNAUTHORIZED_DOMAIN\"}}")
1165+
.setStatusCode(500);
1166+
FirebaseAuth auth = getRetryDisabledAuth(response);
11851167
FirebaseUserManager userManager = auth.getUserManager();
11861168
try {
11871169
userManager.getEmailActionLink(EmailLinkType.PASSWORD_RESET, "[email protected]", null);
@@ -1194,15 +1176,10 @@ public void testHttpErrorWithCode() {
11941176

11951177
@Test
11961178
public void testUnexpectedHttpError() {
1197-
FirebaseApp.initializeApp(new FirebaseOptions.Builder()
1198-
.setCredentials(credentials)
1199-
.setHttpTransport(new MultiRequestMockHttpTransport(ImmutableList.of(
1200-
new MockLowLevelHttpResponse()
1201-
.setContent("{}")
1202-
.setStatusCode(500))))
1203-
.setProjectId("test-project-id")
1204-
.build());
1205-
FirebaseAuth auth = FirebaseAuth.getInstance();
1179+
MockLowLevelHttpResponse response = new MockLowLevelHttpResponse()
1180+
.setContent("{}")
1181+
.setStatusCode(500);
1182+
FirebaseAuth auth = getRetryDisabledAuth(response);
12061183
FirebaseUserManager userManager = auth.getUserManager();
12071184
try {
12081185
userManager.getEmailActionLink(EmailLinkType.PASSWORD_RESET, "[email protected]", null);
@@ -1231,6 +1208,26 @@ private static TestResponseInterceptor initializeAppForUserManagement(String ...
12311208
return interceptor;
12321209
}
12331210

1211+
private static FirebaseAuth getRetryDisabledAuth(MockLowLevelHttpResponse response) {
1212+
final MockHttpTransport transport = new MockHttpTransport.Builder()
1213+
.setLowLevelHttpResponse(response)
1214+
.build();
1215+
final FirebaseApp app = FirebaseApp.initializeApp(new FirebaseOptions.Builder()
1216+
.setCredentials(credentials)
1217+
.setProjectId("test-project-id")
1218+
.setHttpTransport(transport)
1219+
.build());
1220+
return FirebaseAuth.builder()
1221+
.setFirebaseApp(app)
1222+
.setUserManager(new Supplier<FirebaseUserManager>() {
1223+
@Override
1224+
public FirebaseUserManager get() {
1225+
return new FirebaseUserManager(app, transport.createRequestFactory());
1226+
}
1227+
})
1228+
.build();
1229+
}
1230+
12341231
private static void checkUserRecord(UserRecord userRecord) {
12351232
assertEquals("testuser", userRecord.getUid());
12361233
assertEquals("[email protected]", userRecord.getEmail());

0 commit comments

Comments
 (0)