47
47
import com .google .firebase .FirebaseOptions ;
48
48
import com .google .firebase .ImplFirebaseTrampolines ;
49
49
import com .google .firebase .auth .ProviderConfigTestUtils .TemporaryProviderConfig ;
50
+ import com .google .firebase .auth .UserTestUtils .RandomUser ;
51
+ import com .google .firebase .auth .UserTestUtils .TemporaryUser ;
50
52
import com .google .firebase .auth .hash .Scrypt ;
51
53
import com .google .firebase .internal .Nullable ;
52
54
import com .google .firebase .testing .IntegrationTestUtils ;
56
58
import java .util .HashMap ;
57
59
import java .util .List ;
58
60
import java .util .Map ;
59
- import java .util .Random ;
60
- import java .util .UUID ;
61
61
import java .util .concurrent .ExecutionException ;
62
62
import java .util .concurrent .Semaphore ;
63
63
import java .util .concurrent .TimeUnit ;
@@ -85,7 +85,7 @@ public class FirebaseAuthIT {
85
85
private static final FirebaseAuth auth = FirebaseAuth .getInstance (
86
86
IntegrationTestUtils .ensureDefaultApp ());
87
87
88
- @ Rule public final TemporaryUser temporaryUser = new TemporaryUser ();
88
+ @ Rule public final TemporaryUser temporaryUser = new TemporaryUser (auth );
89
89
@ Rule public final TemporaryProviderConfig temporaryProviderConfig =
90
90
new TemporaryProviderConfig (auth );
91
91
@@ -211,22 +211,21 @@ private ApiFuture<DeleteUsersResult> slowDeleteUsersAsync(List<String> uids) thr
211
211
212
212
@ Test
213
213
public void testCreateUserWithParams () throws Exception {
214
- RandomUser randomUser = RandomUser .create ();
215
- String phone = randomPhoneNumber ();
214
+ RandomUser randomUser = UserTestUtils .generateRandomUserInfo ();
216
215
UserRecord .CreateRequest user = new UserRecord .CreateRequest ()
217
- .setUid (randomUser .uid )
218
- .setEmail (randomUser .email )
219
- .setPhoneNumber (phone )
216
+ .setUid (randomUser .getUid () )
217
+ .setEmail (randomUser .getEmail () )
218
+ .setPhoneNumber (randomUser . getPhoneNumber () )
220
219
.setDisplayName ("Random User" )
221
220
.setPhotoUrl ("https://example.com/photo.png" )
222
221
.setEmailVerified (true )
223
222
.setPassword ("password" );
224
223
225
224
UserRecord userRecord = temporaryUser .create (user );
226
- assertEquals (randomUser .uid , userRecord .getUid ());
225
+ assertEquals (randomUser .getUid () , userRecord .getUid ());
227
226
assertEquals ("Random User" , userRecord .getDisplayName ());
228
- assertEquals (randomUser .email , userRecord .getEmail ());
229
- assertEquals (phone , userRecord .getPhoneNumber ());
227
+ assertEquals (randomUser .getEmail () , userRecord .getEmail ());
228
+ assertEquals (randomUser . getPhoneNumber () , userRecord .getPhoneNumber ());
230
229
assertEquals ("https://example.com/photo.png" , userRecord .getPhotoUrl ());
231
230
assertTrue (userRecord .isEmailVerified ());
232
231
assertFalse (userRecord .isDisabled ());
@@ -239,7 +238,7 @@ public void testCreateUserWithParams() throws Exception {
239
238
assertTrue (providers .contains ("password" ));
240
239
assertTrue (providers .contains ("phone" ));
241
240
242
- checkRecreateUser (randomUser .uid );
241
+ checkRecreateUser (randomUser .getUid () );
243
242
}
244
243
245
244
@ Test
@@ -264,21 +263,20 @@ public void testUserLifecycle() throws Exception {
264
263
assertTrue (userRecord .getCustomClaims ().isEmpty ());
265
264
266
265
// Update user
267
- RandomUser randomUser = RandomUser .create ();
268
- String phone = randomPhoneNumber ();
266
+ RandomUser randomUser = UserTestUtils .generateRandomUserInfo ();
269
267
UserRecord .UpdateRequest request = userRecord .updateRequest ()
270
268
.setDisplayName ("Updated Name" )
271
- .setEmail (randomUser .email )
272
- .setPhoneNumber (phone )
269
+ .setEmail (randomUser .getEmail () )
270
+ .setPhoneNumber (randomUser . getPhoneNumber () )
273
271
.setPhotoUrl ("https://example.com/photo.png" )
274
272
.setEmailVerified (true )
275
273
.setPassword ("secret" );
276
274
userRecord = auth .updateUserAsync (request ).get ();
277
275
assertEquals (uid , userRecord .getUid ());
278
276
assertNull (userRecord .getTenantId ());
279
277
assertEquals ("Updated Name" , userRecord .getDisplayName ());
280
- assertEquals (randomUser .email , userRecord .getEmail ());
281
- assertEquals (phone , userRecord .getPhoneNumber ());
278
+ assertEquals (randomUser .getEmail () , userRecord .getEmail ());
279
+ assertEquals (randomUser . getPhoneNumber () , userRecord .getPhoneNumber ());
282
280
assertEquals ("https://example.com/photo.png" , userRecord .getPhotoUrl ());
283
281
assertTrue (userRecord .isEmailVerified ());
284
282
assertFalse (userRecord .isDisabled ());
@@ -299,7 +297,7 @@ public void testUserLifecycle() throws Exception {
299
297
assertEquals (uid , userRecord .getUid ());
300
298
assertNull (userRecord .getTenantId ());
301
299
assertNull (userRecord .getDisplayName ());
302
- assertEquals (randomUser .email , userRecord .getEmail ());
300
+ assertEquals (randomUser .getEmail () , userRecord .getEmail ());
303
301
assertNull (userRecord .getPhoneNumber ());
304
302
assertNull (userRecord .getPhotoUrl ());
305
303
assertTrue (userRecord .isEmailVerified ());
@@ -309,15 +307,15 @@ public void testUserLifecycle() throws Exception {
309
307
310
308
// Delete user
311
309
auth .deleteUserAsync (userRecord .getUid ()).get ();
312
- assertUserDoesNotExist (auth , userRecord .getUid ());
310
+ UserTestUtils . assertUserDoesNotExist (auth , userRecord .getUid ());
313
311
}
314
312
315
313
@ Test
316
314
public void testLastRefreshTime () throws Exception {
317
- RandomUser user = RandomUser . create ();
315
+ RandomUser user = UserTestUtils . generateRandomUserInfo ();
318
316
UserRecord newUserRecord = auth .createUser (new UserRecord .CreateRequest ()
319
- .setUid (user .uid )
320
- .setEmail (user .email )
317
+ .setUid (user .getUid () )
318
+ .setEmail (user .getEmail () )
321
319
.setEmailVerified (false )
322
320
.setPassword ("password" ));
323
321
@@ -555,29 +553,29 @@ public void testCustomTokenWithClaims() throws Exception {
555
553
556
554
@ Test
557
555
public void testImportUsers () throws Exception {
558
- RandomUser randomUser = RandomUser . create ();
556
+ RandomUser randomUser = UserTestUtils . generateRandomUserInfo ();
559
557
ImportUserRecord user = ImportUserRecord .builder ()
560
- .setUid (randomUser .uid )
561
- .setEmail (randomUser .email )
558
+ .setUid (randomUser .getUid () )
559
+ .setEmail (randomUser .getEmail () )
562
560
.build ();
563
561
564
562
UserImportResult result = auth .importUsersAsync (ImmutableList .of (user )).get ();
565
- temporaryUser .registerUid (randomUser .uid );
563
+ temporaryUser .registerUid (randomUser .getUid () );
566
564
assertEquals (1 , result .getSuccessCount ());
567
565
assertEquals (0 , result .getFailureCount ());
568
566
569
- UserRecord savedUser = auth .getUserAsync (randomUser .uid ).get ();
570
- assertEquals (randomUser .email , savedUser .getEmail ());
567
+ UserRecord savedUser = auth .getUserAsync (randomUser .getUid () ).get ();
568
+ assertEquals (randomUser .getEmail () , savedUser .getEmail ());
571
569
}
572
570
573
571
@ Test
574
572
public void testImportUsersWithPassword () throws Exception {
575
- RandomUser randomUser = RandomUser . create ();
573
+ RandomUser randomUser = UserTestUtils . generateRandomUserInfo ();
576
574
final byte [] passwordHash = BaseEncoding .base64 ().decode (
577
575
"V358E8LdWJXAO7muq0CufVpEOXaj8aFiC7T/rcaGieN04q/ZPJ08WhJEHGjj9lz/2TT+/86N5VjVoc5DdBhBiw==" );
578
576
ImportUserRecord user = ImportUserRecord .builder ()
579
- .setUid (randomUser .uid )
580
- .setEmail (randomUser .email )
577
+ .setUid (randomUser .getUid () )
578
+ .setEmail (randomUser .getEmail () )
581
579
.setPasswordHash (passwordHash )
582
580
.setPasswordSalt ("NaCl" .getBytes ())
583
581
.build ();
@@ -593,46 +591,46 @@ public void testImportUsersWithPassword() throws Exception {
593
591
.setRounds (8 )
594
592
.setMemoryCost (14 )
595
593
.build ())).get ();
596
- temporaryUser .registerUid (randomUser .uid );
594
+ temporaryUser .registerUid (randomUser .getUid () );
597
595
assertEquals (1 , result .getSuccessCount ());
598
596
assertEquals (0 , result .getFailureCount ());
599
597
600
- UserRecord savedUser = auth .getUserAsync (randomUser .uid ).get ();
601
- assertEquals (randomUser .email , savedUser .getEmail ());
602
- String idToken = signInWithPassword (randomUser .email , "password" );
598
+ UserRecord savedUser = auth .getUserAsync (randomUser .getUid () ).get ();
599
+ assertEquals (randomUser .getEmail () , savedUser .getEmail ());
600
+ String idToken = signInWithPassword (randomUser .getEmail () , "password" );
603
601
assertFalse (Strings .isNullOrEmpty (idToken ));
604
602
}
605
603
606
604
@ Test
607
605
public void testGeneratePasswordResetLink () throws Exception {
608
- RandomUser user = RandomUser . create ();
606
+ RandomUser user = UserTestUtils . generateRandomUserInfo ();
609
607
temporaryUser .create (new UserRecord .CreateRequest ()
610
- .setUid (user .uid )
611
- .setEmail (user .email )
608
+ .setUid (user .getUid () )
609
+ .setEmail (user .getEmail () )
612
610
.setEmailVerified (false )
613
611
.setPassword ("password" ));
614
- String link = auth .generatePasswordResetLink (user .email , ActionCodeSettings .builder ()
612
+ String link = auth .generatePasswordResetLink (user .getEmail () , ActionCodeSettings .builder ()
615
613
.setUrl (ACTION_LINK_CONTINUE_URL )
616
614
.setHandleCodeInApp (false )
617
615
.build ());
618
616
Map <String , String > linkParams = parseLinkParameters (link );
619
617
assertEquals (ACTION_LINK_CONTINUE_URL , linkParams .get ("continueUrl" ));
620
- String email = resetPassword (user .email , "password" , "newpassword" ,
618
+ String email = resetPassword (user .getEmail () , "password" , "newpassword" ,
621
619
linkParams .get ("oobCode" ));
622
- assertEquals (user .email , email );
620
+ assertEquals (user .getEmail () , email );
623
621
// Password reset also verifies the user's email
624
- assertTrue (auth .getUser (user .uid ).isEmailVerified ());
622
+ assertTrue (auth .getUser (user .getUid () ).isEmailVerified ());
625
623
}
626
624
627
625
@ Test
628
626
public void testGenerateEmailVerificationResetLink () throws Exception {
629
- RandomUser user = RandomUser . create ();
627
+ RandomUser user = UserTestUtils . generateRandomUserInfo ();
630
628
temporaryUser .create (new UserRecord .CreateRequest ()
631
- .setUid (user .uid )
632
- .setEmail (user .email )
629
+ .setUid (user .getUid () )
630
+ .setEmail (user .getEmail () )
633
631
.setEmailVerified (false )
634
632
.setPassword ("password" ));
635
- String link = auth .generateEmailVerificationLink (user .email , ActionCodeSettings .builder ()
633
+ String link = auth .generateEmailVerificationLink (user .getEmail () , ActionCodeSettings .builder ()
636
634
.setUrl (ACTION_LINK_CONTINUE_URL )
637
635
.setHandleCodeInApp (false )
638
636
.build ());
@@ -645,21 +643,21 @@ public void testGenerateEmailVerificationResetLink() throws Exception {
645
643
646
644
@ Test
647
645
public void testGenerateSignInWithEmailLink () throws Exception {
648
- RandomUser user = RandomUser . create ();
646
+ RandomUser user = UserTestUtils . generateRandomUserInfo ();
649
647
temporaryUser .create (new UserRecord .CreateRequest ()
650
- .setUid (user .uid )
651
- .setEmail (user .email )
648
+ .setUid (user .getUid () )
649
+ .setEmail (user .getEmail () )
652
650
.setEmailVerified (false )
653
651
.setPassword ("password" ));
654
- String link = auth .generateSignInWithEmailLink (user .email , ActionCodeSettings .builder ()
652
+ String link = auth .generateSignInWithEmailLink (user .getEmail () , ActionCodeSettings .builder ()
655
653
.setUrl (ACTION_LINK_CONTINUE_URL )
656
654
.setHandleCodeInApp (false )
657
655
.build ());
658
656
Map <String , String > linkParams = parseLinkParameters (link );
659
657
assertEquals (ACTION_LINK_CONTINUE_URL , linkParams .get ("continueUrl" ));
660
- String idToken = signInWithEmailLink (user .email , linkParams .get ("oobCode" ));
658
+ String idToken = signInWithEmailLink (user .getEmail () , linkParams .get ("oobCode" ));
661
659
assertFalse (Strings .isNullOrEmpty (idToken ));
662
- assertTrue (auth .getUser (user .uid ).isEmailVerified ());
660
+ assertTrue (auth .getUser (user .getUid () ).isEmailVerified ());
663
661
}
664
662
665
663
@ Test
@@ -913,15 +911,6 @@ private Map<String, String> parseLinkParameters(String link) throws Exception {
913
911
return result ;
914
912
}
915
913
916
- static String randomPhoneNumber () {
917
- Random random = new Random ();
918
- StringBuilder builder = new StringBuilder ("+1" );
919
- for (int i = 0 ; i < 10 ; i ++) {
920
- builder .append (random .nextInt (10 ));
921
- }
922
- return builder .toString ();
923
- }
924
-
925
914
private String signInWithCustomToken (String customToken ) throws IOException {
926
915
return signInWithCustomToken (customToken , null );
927
916
}
@@ -1011,23 +1000,6 @@ private void checkRecreateUser(String uid) throws Exception {
1011
1000
}
1012
1001
}
1013
1002
1014
- static class RandomUser {
1015
- final String uid ;
1016
- final String email ;
1017
-
1018
- private RandomUser (String uid , String email ) {
1019
- this .uid = uid ;
1020
- this .email = email ;
1021
- }
1022
-
1023
- static RandomUser create () {
1024
- final String uid = UUID .randomUUID ().toString ().replaceAll ("-" , "" );
1025
- final String email = ("test" + uid .substring (0 , 12 ) + "@example."
1026
- + uid .substring (12 ) + ".com" ).toLowerCase ();
1027
- return new RandomUser (uid , email );
1028
- }
1029
- }
1030
-
1031
1003
private boolean checkOidcProviderConfig (List <String > providerIds , OidcProviderConfig config ) {
1032
1004
if (providerIds .contains (config .getProviderId ())) {
1033
1005
assertEquals ("CLIENT_ID" , config .getClientId ());
@@ -1068,45 +1040,14 @@ static UserRecord newUserWithParams() throws Exception {
1068
1040
static UserRecord newUserWithParams (FirebaseAuth auth ) throws Exception {
1069
1041
// TODO(rsgowman): This function could be used throughout this file (similar to the other
1070
1042
// ports).
1071
- RandomUser randomUser = RandomUser . create ();
1043
+ RandomUser randomUser = UserTestUtils . generateRandomUserInfo ();
1072
1044
return auth .createUser (new UserRecord .CreateRequest ()
1073
- .setUid (randomUser .uid )
1074
- .setEmail (randomUser .email )
1075
- .setPhoneNumber (randomPhoneNumber ())
1045
+ .setUid (randomUser .getUid () )
1046
+ .setEmail (randomUser .getEmail () )
1047
+ .setPhoneNumber (randomUser . getPhoneNumber ())
1076
1048
.setDisplayName ("Random User" )
1077
1049
.setPhotoUrl ("https://example.com/photo.png" )
1078
1050
.setPassword ("password" ));
1079
1051
}
1080
-
1081
- /**
1082
- * Creates temporary Firebase user accounts for testing, and deletes them at the end of each
1083
- * test case.
1084
- */
1085
- private static final class TemporaryUser extends ExternalResource {
1086
-
1087
- private final List <String > users = new ArrayList <>();
1088
-
1089
- public UserRecord create (UserRecord .CreateRequest request ) throws FirebaseAuthException {
1090
- UserRecord user = auth .createUser (request );
1091
- registerUid (user .getUid ());
1092
- return user ;
1093
- }
1094
-
1095
- public synchronized void registerUid (String uid ) {
1096
- users .add (uid );
1097
- }
1098
-
1099
- @ Override
1100
- protected synchronized void after () {
1101
- for (String uid : users ) {
1102
- try {
1103
- auth .deleteUser (uid );
1104
- } catch (Exception ignore ) {
1105
- // Ignore
1106
- }
1107
- }
1108
-
1109
- users .clear ();
1110
- }
1111
- }
1112
1052
}
1053
+
0 commit comments