Skip to content

Commit d32705a

Browse files
committed
Refactor shared code into UserTestUtils. (#432)
1 parent 0fa48b2 commit d32705a

File tree

4 files changed

+252
-233
lines changed

4 files changed

+252
-233
lines changed

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

Lines changed: 56 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
import com.google.firebase.FirebaseOptions;
4848
import com.google.firebase.ImplFirebaseTrampolines;
4949
import com.google.firebase.auth.ProviderConfigTestUtils.TemporaryProviderConfig;
50+
import com.google.firebase.auth.UserTestUtils.RandomUser;
51+
import com.google.firebase.auth.UserTestUtils.TemporaryUser;
5052
import com.google.firebase.auth.hash.Scrypt;
5153
import com.google.firebase.internal.Nullable;
5254
import com.google.firebase.testing.IntegrationTestUtils;
@@ -56,8 +58,6 @@
5658
import java.util.HashMap;
5759
import java.util.List;
5860
import java.util.Map;
59-
import java.util.Random;
60-
import java.util.UUID;
6161
import java.util.concurrent.ExecutionException;
6262
import java.util.concurrent.Semaphore;
6363
import java.util.concurrent.TimeUnit;
@@ -85,7 +85,7 @@ public class FirebaseAuthIT {
8585
private static final FirebaseAuth auth = FirebaseAuth.getInstance(
8686
IntegrationTestUtils.ensureDefaultApp());
8787

88-
@Rule public final TemporaryUser temporaryUser = new TemporaryUser();
88+
@Rule public final TemporaryUser temporaryUser = new TemporaryUser(auth);
8989
@Rule public final TemporaryProviderConfig temporaryProviderConfig =
9090
new TemporaryProviderConfig(auth);
9191

@@ -211,22 +211,21 @@ private ApiFuture<DeleteUsersResult> slowDeleteUsersAsync(List<String> uids) thr
211211

212212
@Test
213213
public void testCreateUserWithParams() throws Exception {
214-
RandomUser randomUser = RandomUser.create();
215-
String phone = randomPhoneNumber();
214+
RandomUser randomUser = UserTestUtils.generateRandomUserInfo();
216215
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())
220219
.setDisplayName("Random User")
221220
.setPhotoUrl("https://example.com/photo.png")
222221
.setEmailVerified(true)
223222
.setPassword("password");
224223

225224
UserRecord userRecord = temporaryUser.create(user);
226-
assertEquals(randomUser.uid, userRecord.getUid());
225+
assertEquals(randomUser.getUid(), userRecord.getUid());
227226
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());
230229
assertEquals("https://example.com/photo.png", userRecord.getPhotoUrl());
231230
assertTrue(userRecord.isEmailVerified());
232231
assertFalse(userRecord.isDisabled());
@@ -239,7 +238,7 @@ public void testCreateUserWithParams() throws Exception {
239238
assertTrue(providers.contains("password"));
240239
assertTrue(providers.contains("phone"));
241240

242-
checkRecreateUser(randomUser.uid);
241+
checkRecreateUser(randomUser.getUid());
243242
}
244243

245244
@Test
@@ -264,21 +263,20 @@ public void testUserLifecycle() throws Exception {
264263
assertTrue(userRecord.getCustomClaims().isEmpty());
265264

266265
// Update user
267-
RandomUser randomUser = RandomUser.create();
268-
String phone = randomPhoneNumber();
266+
RandomUser randomUser = UserTestUtils.generateRandomUserInfo();
269267
UserRecord.UpdateRequest request = userRecord.updateRequest()
270268
.setDisplayName("Updated Name")
271-
.setEmail(randomUser.email)
272-
.setPhoneNumber(phone)
269+
.setEmail(randomUser.getEmail())
270+
.setPhoneNumber(randomUser.getPhoneNumber())
273271
.setPhotoUrl("https://example.com/photo.png")
274272
.setEmailVerified(true)
275273
.setPassword("secret");
276274
userRecord = auth.updateUserAsync(request).get();
277275
assertEquals(uid, userRecord.getUid());
278276
assertNull(userRecord.getTenantId());
279277
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());
282280
assertEquals("https://example.com/photo.png", userRecord.getPhotoUrl());
283281
assertTrue(userRecord.isEmailVerified());
284282
assertFalse(userRecord.isDisabled());
@@ -299,7 +297,7 @@ public void testUserLifecycle() throws Exception {
299297
assertEquals(uid, userRecord.getUid());
300298
assertNull(userRecord.getTenantId());
301299
assertNull(userRecord.getDisplayName());
302-
assertEquals(randomUser.email, userRecord.getEmail());
300+
assertEquals(randomUser.getEmail(), userRecord.getEmail());
303301
assertNull(userRecord.getPhoneNumber());
304302
assertNull(userRecord.getPhotoUrl());
305303
assertTrue(userRecord.isEmailVerified());
@@ -309,15 +307,15 @@ public void testUserLifecycle() throws Exception {
309307

310308
// Delete user
311309
auth.deleteUserAsync(userRecord.getUid()).get();
312-
assertUserDoesNotExist(auth, userRecord.getUid());
310+
UserTestUtils.assertUserDoesNotExist(auth, userRecord.getUid());
313311
}
314312

315313
@Test
316314
public void testLastRefreshTime() throws Exception {
317-
RandomUser user = RandomUser.create();
315+
RandomUser user = UserTestUtils.generateRandomUserInfo();
318316
UserRecord newUserRecord = auth.createUser(new UserRecord.CreateRequest()
319-
.setUid(user.uid)
320-
.setEmail(user.email)
317+
.setUid(user.getUid())
318+
.setEmail(user.getEmail())
321319
.setEmailVerified(false)
322320
.setPassword("password"));
323321

@@ -555,29 +553,29 @@ public void testCustomTokenWithClaims() throws Exception {
555553

556554
@Test
557555
public void testImportUsers() throws Exception {
558-
RandomUser randomUser = RandomUser.create();
556+
RandomUser randomUser = UserTestUtils.generateRandomUserInfo();
559557
ImportUserRecord user = ImportUserRecord.builder()
560-
.setUid(randomUser.uid)
561-
.setEmail(randomUser.email)
558+
.setUid(randomUser.getUid())
559+
.setEmail(randomUser.getEmail())
562560
.build();
563561

564562
UserImportResult result = auth.importUsersAsync(ImmutableList.of(user)).get();
565-
temporaryUser.registerUid(randomUser.uid);
563+
temporaryUser.registerUid(randomUser.getUid());
566564
assertEquals(1, result.getSuccessCount());
567565
assertEquals(0, result.getFailureCount());
568566

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());
571569
}
572570

573571
@Test
574572
public void testImportUsersWithPassword() throws Exception {
575-
RandomUser randomUser = RandomUser.create();
573+
RandomUser randomUser = UserTestUtils.generateRandomUserInfo();
576574
final byte[] passwordHash = BaseEncoding.base64().decode(
577575
"V358E8LdWJXAO7muq0CufVpEOXaj8aFiC7T/rcaGieN04q/ZPJ08WhJEHGjj9lz/2TT+/86N5VjVoc5DdBhBiw==");
578576
ImportUserRecord user = ImportUserRecord.builder()
579-
.setUid(randomUser.uid)
580-
.setEmail(randomUser.email)
577+
.setUid(randomUser.getUid())
578+
.setEmail(randomUser.getEmail())
581579
.setPasswordHash(passwordHash)
582580
.setPasswordSalt("NaCl".getBytes())
583581
.build();
@@ -593,46 +591,46 @@ public void testImportUsersWithPassword() throws Exception {
593591
.setRounds(8)
594592
.setMemoryCost(14)
595593
.build())).get();
596-
temporaryUser.registerUid(randomUser.uid);
594+
temporaryUser.registerUid(randomUser.getUid());
597595
assertEquals(1, result.getSuccessCount());
598596
assertEquals(0, result.getFailureCount());
599597

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");
603601
assertFalse(Strings.isNullOrEmpty(idToken));
604602
}
605603

606604
@Test
607605
public void testGeneratePasswordResetLink() throws Exception {
608-
RandomUser user = RandomUser.create();
606+
RandomUser user = UserTestUtils.generateRandomUserInfo();
609607
temporaryUser.create(new UserRecord.CreateRequest()
610-
.setUid(user.uid)
611-
.setEmail(user.email)
608+
.setUid(user.getUid())
609+
.setEmail(user.getEmail())
612610
.setEmailVerified(false)
613611
.setPassword("password"));
614-
String link = auth.generatePasswordResetLink(user.email, ActionCodeSettings.builder()
612+
String link = auth.generatePasswordResetLink(user.getEmail(), ActionCodeSettings.builder()
615613
.setUrl(ACTION_LINK_CONTINUE_URL)
616614
.setHandleCodeInApp(false)
617615
.build());
618616
Map<String, String> linkParams = parseLinkParameters(link);
619617
assertEquals(ACTION_LINK_CONTINUE_URL, linkParams.get("continueUrl"));
620-
String email = resetPassword(user.email, "password", "newpassword",
618+
String email = resetPassword(user.getEmail(), "password", "newpassword",
621619
linkParams.get("oobCode"));
622-
assertEquals(user.email, email);
620+
assertEquals(user.getEmail(), email);
623621
// Password reset also verifies the user's email
624-
assertTrue(auth.getUser(user.uid).isEmailVerified());
622+
assertTrue(auth.getUser(user.getUid()).isEmailVerified());
625623
}
626624

627625
@Test
628626
public void testGenerateEmailVerificationResetLink() throws Exception {
629-
RandomUser user = RandomUser.create();
627+
RandomUser user = UserTestUtils.generateRandomUserInfo();
630628
temporaryUser.create(new UserRecord.CreateRequest()
631-
.setUid(user.uid)
632-
.setEmail(user.email)
629+
.setUid(user.getUid())
630+
.setEmail(user.getEmail())
633631
.setEmailVerified(false)
634632
.setPassword("password"));
635-
String link = auth.generateEmailVerificationLink(user.email, ActionCodeSettings.builder()
633+
String link = auth.generateEmailVerificationLink(user.getEmail(), ActionCodeSettings.builder()
636634
.setUrl(ACTION_LINK_CONTINUE_URL)
637635
.setHandleCodeInApp(false)
638636
.build());
@@ -645,21 +643,21 @@ public void testGenerateEmailVerificationResetLink() throws Exception {
645643

646644
@Test
647645
public void testGenerateSignInWithEmailLink() throws Exception {
648-
RandomUser user = RandomUser.create();
646+
RandomUser user = UserTestUtils.generateRandomUserInfo();
649647
temporaryUser.create(new UserRecord.CreateRequest()
650-
.setUid(user.uid)
651-
.setEmail(user.email)
648+
.setUid(user.getUid())
649+
.setEmail(user.getEmail())
652650
.setEmailVerified(false)
653651
.setPassword("password"));
654-
String link = auth.generateSignInWithEmailLink(user.email, ActionCodeSettings.builder()
652+
String link = auth.generateSignInWithEmailLink(user.getEmail(), ActionCodeSettings.builder()
655653
.setUrl(ACTION_LINK_CONTINUE_URL)
656654
.setHandleCodeInApp(false)
657655
.build());
658656
Map<String, String> linkParams = parseLinkParameters(link);
659657
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"));
661659
assertFalse(Strings.isNullOrEmpty(idToken));
662-
assertTrue(auth.getUser(user.uid).isEmailVerified());
660+
assertTrue(auth.getUser(user.getUid()).isEmailVerified());
663661
}
664662

665663
@Test
@@ -913,15 +911,6 @@ private Map<String, String> parseLinkParameters(String link) throws Exception {
913911
return result;
914912
}
915913

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-
925914
private String signInWithCustomToken(String customToken) throws IOException {
926915
return signInWithCustomToken(customToken, null);
927916
}
@@ -1011,23 +1000,6 @@ private void checkRecreateUser(String uid) throws Exception {
10111000
}
10121001
}
10131002

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-
10311003
private boolean checkOidcProviderConfig(List<String> providerIds, OidcProviderConfig config) {
10321004
if (providerIds.contains(config.getProviderId())) {
10331005
assertEquals("CLIENT_ID", config.getClientId());
@@ -1068,45 +1040,14 @@ static UserRecord newUserWithParams() throws Exception {
10681040
static UserRecord newUserWithParams(FirebaseAuth auth) throws Exception {
10691041
// TODO(rsgowman): This function could be used throughout this file (similar to the other
10701042
// ports).
1071-
RandomUser randomUser = RandomUser.create();
1043+
RandomUser randomUser = UserTestUtils.generateRandomUserInfo();
10721044
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())
10761048
.setDisplayName("Random User")
10771049
.setPhotoUrl("https://example.com/photo.png")
10781050
.setPassword("password"));
10791051
}
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-
}
11121052
}
1053+

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import com.google.common.collect.ImmutableList;
2323
import com.google.firebase.FirebaseApp;
24+
import com.google.firebase.auth.UserTestUtils.RandomUser;
2425
import com.google.firebase.testing.IntegrationTestUtils;
2526
import java.util.Collection;
2627

@@ -44,18 +45,17 @@ public static void setUpClass() throws Exception {
4445
testUser2 = FirebaseAuthIT.newUserWithParams(auth);
4546
testUser3 = FirebaseAuthIT.newUserWithParams(auth);
4647

47-
FirebaseAuthIT.RandomUser randomUser = FirebaseAuthIT.RandomUser.create();
48-
importUserUid = randomUser.uid;
49-
String phone = FirebaseAuthIT.randomPhoneNumber();
48+
RandomUser randomUser = UserTestUtils.generateRandomUserInfo();
49+
importUserUid = randomUser.getUid();
5050
UserImportResult result = auth.importUsers(ImmutableList.of(
5151
ImportUserRecord.builder()
52-
.setUid(randomUser.uid)
53-
.setEmail(randomUser.email)
54-
.setPhoneNumber(phone)
52+
.setUid(randomUser.getUid())
53+
.setEmail(randomUser.getEmail())
54+
.setPhoneNumber(randomUser.getPhoneNumber())
5555
.addUserProvider(
5656
UserProvider.builder()
5757
.setProviderId("google.com")
58-
.setUid("google_" + randomUser.uid)
58+
.setUid("google_" + randomUser.getUid())
5959
.build())
6060
.build()
6161
));

0 commit comments

Comments
 (0)