46
46
import com .google .firebase .FirebaseApp ;
47
47
import com .google .firebase .FirebaseOptions ;
48
48
import com .google .firebase .ImplFirebaseTrampolines ;
49
- import com .google .firebase .auth .UserRecord .CreateRequest ;
50
- import com .google .firebase .auth .UserRecord .UpdateRequest ;
51
49
import com .google .firebase .auth .hash .Scrypt ;
52
50
import com .google .firebase .testing .IntegrationTestUtils ;
53
51
import java .io .IOException ;
@@ -116,7 +114,7 @@ public void testGetNonExistingUserByEmail() throws Exception {
116
114
@ Test
117
115
public void testUpdateNonExistingUser () throws Exception {
118
116
try {
119
- auth .updateUserAsync (new UpdateRequest ("non.existing" )).get ();
117
+ auth .updateUserAsync (new UserRecord . UpdateRequest ("non.existing" )).get ();
120
118
fail ("No error thrown for non existing uid" );
121
119
} catch (ExecutionException e ) {
122
120
assertTrue (e .getCause () instanceof FirebaseAuthException );
@@ -141,7 +139,7 @@ public void testDeleteNonExistingUser() throws Exception {
141
139
public void testCreateUserWithParams () throws Exception {
142
140
RandomUser randomUser = RandomUser .create ();
143
141
String phone = randomPhoneNumber ();
144
- CreateRequest user = new CreateRequest ()
142
+ UserRecord . CreateRequest user = new UserRecord . CreateRequest ()
145
143
.setUid (randomUser .uid )
146
144
.setEmail (randomUser .email )
147
145
.setPhoneNumber (phone )
@@ -168,7 +166,7 @@ public void testCreateUserWithParams() throws Exception {
168
166
assertTrue (providers .contains ("password" ));
169
167
assertTrue (providers .contains ("phone" ));
170
168
171
- checkRecreate (randomUser .uid );
169
+ checkRecreateUser (randomUser .uid );
172
170
} finally {
173
171
auth .deleteUserAsync (userRecord .getUid ()).get ();
174
172
}
@@ -177,7 +175,7 @@ public void testCreateUserWithParams() throws Exception {
177
175
@ Test
178
176
public void testUserLifecycle () throws Exception {
179
177
// Create user
180
- UserRecord userRecord = auth .createUserAsync (new CreateRequest ()).get ();
178
+ UserRecord userRecord = auth .createUserAsync (new UserRecord . CreateRequest ()).get ();
181
179
String uid = userRecord .getUid ();
182
180
183
181
// Get user
@@ -197,7 +195,7 @@ public void testUserLifecycle() throws Exception {
197
195
// Update user
198
196
RandomUser randomUser = RandomUser .create ();
199
197
String phone = randomPhoneNumber ();
200
- UpdateRequest request = userRecord .updateRequest ()
198
+ UserRecord . UpdateRequest request = userRecord .updateRequest ()
201
199
.setDisplayName ("Updated Name" )
202
200
.setEmail (randomUser .email )
203
201
.setPhoneNumber (phone )
@@ -240,7 +238,7 @@ public void testUserLifecycle() throws Exception {
240
238
auth .deleteUserAsync (userRecord .getUid ()).get ();
241
239
try {
242
240
auth .getUserAsync (userRecord .getUid ()).get ();
243
- fail ("No error thrown for deleted user" );
241
+ fail ("No error thrown for getting a deleted user" );
244
242
} catch (ExecutionException e ) {
245
243
assertTrue (e .getCause () instanceof FirebaseAuthException );
246
244
assertEquals (FirebaseUserManager .USER_NOT_FOUND_ERROR ,
@@ -253,9 +251,11 @@ public void testListUsers() throws Exception {
253
251
final List <String > uids = new ArrayList <>();
254
252
255
253
try {
256
- uids .add (auth .createUserAsync (new CreateRequest ().setPassword ("password" )).get ().getUid ());
257
- uids .add (auth .createUserAsync (new CreateRequest ().setPassword ("password" )).get ().getUid ());
258
- uids .add (auth .createUserAsync (new CreateRequest ().setPassword ("password" )).get ().getUid ());
254
+ for (int i = 0 ; i < 3 ; i ++) {
255
+ UserRecord .CreateRequest createRequest =
256
+ new UserRecord .CreateRequest ().setPassword ("password" );
257
+ uids .add (auth .createUserAsync (createRequest ).get ().getUid ());
258
+ }
259
259
260
260
// Test list by batches
261
261
final AtomicInteger collected = new AtomicInteger (0 );
@@ -320,9 +320,121 @@ public void onSuccess(ListUsersPage result) {
320
320
}
321
321
}
322
322
323
+ @ Test
324
+ public void testTenantLifecycle () throws Exception {
325
+ TenantManager tenantManager = auth .getTenantManager ();
326
+
327
+ // Create tenant
328
+ Tenant .CreateRequest createRequest = new Tenant .CreateRequest ().setDisplayName ("DisplayName" );
329
+ Tenant tenant = tenantManager .createTenantAsync (createRequest ).get ();
330
+ assertEquals ("DisplayName" , tenant .getDisplayName ());
331
+ assertFalse (tenant .isPasswordSignInAllowed ());
332
+ assertFalse (tenant .isEmailLinkSignInEnabled ());
333
+ String tenantId = tenant .getTenantId ();
334
+
335
+ // Get tenant
336
+ tenant = tenantManager .getTenantAsync (tenantId ).get ();
337
+ assertEquals (tenantId , tenant .getTenantId ());
338
+ assertEquals ("DisplayName" , tenant .getDisplayName ());
339
+ assertFalse (tenant .isPasswordSignInAllowed ());
340
+ assertFalse (tenant .isEmailLinkSignInEnabled ());
341
+
342
+ // Update tenant
343
+ Tenant .UpdateRequest updateRequest = tenant .updateRequest ()
344
+ .setDisplayName ("UpdatedName" )
345
+ .setPasswordSignInAllowed (true )
346
+ .setEmailLinkSignInEnabled (true );
347
+ tenant = tenantManager .updateTenantAsync (updateRequest ).get ();
348
+ assertEquals (tenantId , tenant .getTenantId ());
349
+ assertEquals ("UpdatedName" , tenant .getDisplayName ());
350
+ assertTrue (tenant .isPasswordSignInAllowed ());
351
+ assertTrue (tenant .isEmailLinkSignInEnabled ());
352
+
353
+ // Delete tenant
354
+ tenantManager .deleteTenantAsync (tenant .getTenantId ()).get ();
355
+ try {
356
+ tenantManager .getTenantAsync (tenant .getTenantId ()).get ();
357
+ fail ("No error thrown for getting a deleted tenant" );
358
+ } catch (ExecutionException e ) {
359
+ assertTrue (e .getCause () instanceof FirebaseAuthException );
360
+ assertEquals (FirebaseUserManager .TENANT_NOT_FOUND_ERROR ,
361
+ ((FirebaseAuthException ) e .getCause ()).getErrorCode ());
362
+ }
363
+ }
364
+
365
+ @ Test
366
+ public void testListTenants () throws Exception {
367
+ TenantManager tenantManager = auth .getTenantManager ();
368
+ final List <String > tenantIds = new ArrayList <>();
369
+
370
+ try {
371
+ for (int i = 0 ; i < 3 ; i ++) {
372
+ Tenant .CreateRequest createRequest =
373
+ new Tenant .CreateRequest ().setDisplayName ("DisplayName" + i );
374
+ tenantIds .add (tenantManager .createTenantAsync (createRequest ).get ().getTenantId ());
375
+ }
376
+
377
+ // Test list by batches
378
+ final AtomicInteger collected = new AtomicInteger (0 );
379
+ ListTenantsPage page = tenantManager .listTenantsAsync (null ).get ();
380
+ while (page != null ) {
381
+ for (Tenant tenant : page .getValues ()) {
382
+ if (tenantIds .contains (tenant .getTenantId ())) {
383
+ collected .incrementAndGet ();
384
+ assertNotNull (tenant .getDisplayName ());
385
+ }
386
+ }
387
+ page = page .getNextPage ();
388
+ }
389
+ assertEquals (tenantIds .size (), collected .get ());
390
+
391
+ // Test iterate all
392
+ collected .set (0 );
393
+ page = tenantManager .listTenantsAsync (null ).get ();
394
+ for (Tenant tenant : page .iterateAll ()) {
395
+ if (tenantIds .contains (tenant .getTenantId ())) {
396
+ collected .incrementAndGet ();
397
+ assertNotNull (tenant .getDisplayName ());
398
+ }
399
+ }
400
+ assertEquals (tenantIds .size (), collected .get ());
401
+
402
+ // Test iterate async
403
+ collected .set (0 );
404
+ final Semaphore semaphore = new Semaphore (0 );
405
+ final AtomicReference <Throwable > error = new AtomicReference <>();
406
+ ApiFuture <ListTenantsPage > pageFuture = tenantManager .listTenantsAsync (null );
407
+ ApiFutures .addCallback (pageFuture , new ApiFutureCallback <ListTenantsPage >() {
408
+ @ Override
409
+ public void onFailure (Throwable t ) {
410
+ error .set (t );
411
+ semaphore .release ();
412
+ }
413
+
414
+ @ Override
415
+ public void onSuccess (ListTenantsPage result ) {
416
+ for (Tenant tenant : result .iterateAll ()) {
417
+ if (tenantIds .contains (tenant .getTenantId ())) {
418
+ collected .incrementAndGet ();
419
+ assertNotNull (tenant .getDisplayName ());
420
+ }
421
+ }
422
+ semaphore .release ();
423
+ }
424
+ }, MoreExecutors .directExecutor ());
425
+ semaphore .acquire ();
426
+ assertEquals (tenantIds .size (), collected .get ());
427
+ assertNull (error .get ());
428
+ } finally {
429
+ for (String tenantId : tenantIds ) {
430
+ tenantManager .deleteTenantAsync (tenantId ).get ();
431
+ }
432
+ }
433
+ }
434
+
323
435
@ Test
324
436
public void testCustomClaims () throws Exception {
325
- UserRecord userRecord = auth .createUserAsync (new CreateRequest ()).get ();
437
+ UserRecord userRecord = auth .createUserAsync (new UserRecord . CreateRequest ()).get ();
326
438
String uid = userRecord .getUid ();
327
439
328
440
try {
@@ -413,7 +525,7 @@ public void testVerifyIdToken() throws Exception {
413
525
}
414
526
idToken = signInWithCustomToken (customToken );
415
527
decoded = auth .verifyIdTokenAsync (idToken , true ).get ();
416
- assertEquals ("user2" , decoded .getUid ());
528
+ assertEquals ("user2" , decoded .getUid ());
417
529
auth .deleteUserAsync ("user2" );
418
530
}
419
531
@@ -524,7 +636,7 @@ public void testImportUsersWithPassword() throws Exception {
524
636
@ Test
525
637
public void testGeneratePasswordResetLink () throws Exception {
526
638
RandomUser user = RandomUser .create ();
527
- auth .createUser (new CreateRequest ()
639
+ auth .createUser (new UserRecord . CreateRequest ()
528
640
.setUid (user .uid )
529
641
.setEmail (user .email )
530
642
.setEmailVerified (false )
@@ -549,7 +661,7 @@ public void testGeneratePasswordResetLink() throws Exception {
549
661
@ Test
550
662
public void testGenerateEmailVerificationResetLink () throws Exception {
551
663
RandomUser user = RandomUser .create ();
552
- auth .createUser (new CreateRequest ()
664
+ auth .createUser (new UserRecord . CreateRequest ()
553
665
.setUid (user .uid )
554
666
.setEmail (user .email )
555
667
.setEmailVerified (false )
@@ -572,7 +684,7 @@ public void testGenerateEmailVerificationResetLink() throws Exception {
572
684
@ Test
573
685
public void testGenerateSignInWithEmailLink () throws Exception {
574
686
RandomUser user = RandomUser .create ();
575
- auth .createUser (new CreateRequest ()
687
+ auth .createUser (new UserRecord . CreateRequest ()
576
688
.setUid (user .uid )
577
689
.setEmail (user .email )
578
690
.setEmailVerified (false )
@@ -686,9 +798,9 @@ private String signInWithEmailLink(
686
798
}
687
799
}
688
800
689
- private void checkRecreate (String uid ) throws Exception {
801
+ private void checkRecreateUser (String uid ) throws Exception {
690
802
try {
691
- auth .createUserAsync (new CreateRequest ().setUid (uid )).get ();
803
+ auth .createUserAsync (new UserRecord . CreateRequest ().setUid (uid )).get ();
692
804
fail ("No error thrown for creating user with existing ID" );
693
805
} catch (ExecutionException e ) {
694
806
assertTrue (e .getCause () instanceof FirebaseAuthException );
0 commit comments