@@ -360,7 +360,18 @@ def test_last_refresh_timestamp(new_user_with_params: auth.UserRecord, api_key):
360
360
361
361
# login to cause the last_refresh_timestamp to be set
362
362
_sign_in_with_password (new_user_with_params .email , 'secret' , api_key )
363
- new_user_with_params = auth .get_user (new_user_with_params .uid )
363
+
364
+ # Attempt to retrieve the user 3 times (with a small delay between each
365
+ # attempt). Occassionally, this call retrieves the user data without the
366
+ # lastLoginTime/lastRefreshTime set; possibly because it's hitting a
367
+ # different server than the login request uses.
368
+ user_record = None
369
+ for iteration in range (0 , 3 ):
370
+ user_record = auth .get_user (new_user_with_params .uid )
371
+ if user_record .user_metadata .last_refresh_timestamp is not None :
372
+ break
373
+
374
+ time .sleep (2 ** iteration )
364
375
365
376
# Ensure the last refresh time occurred at approximately 'now'. (With a
366
377
# tolerance of up to 1 minute; we ideally want to ensure that any timezone
@@ -369,7 +380,7 @@ def test_last_refresh_timestamp(new_user_with_params: auth.UserRecord, api_key):
369
380
millis_per_second = 1000
370
381
millis_per_minute = millis_per_second * 60
371
382
372
- last_refresh_timestamp = new_user_with_params .user_metadata .last_refresh_timestamp
383
+ last_refresh_timestamp = user_record .user_metadata .last_refresh_timestamp
373
384
assert last_refresh_timestamp == pytest .approx (
374
385
time .time ()* millis_per_second , 1 * millis_per_minute )
375
386
@@ -498,7 +509,7 @@ def test_delete_multiple_users(self):
498
509
uid2 = auth .create_user (disabled = False ).uid
499
510
uid3 = auth .create_user (disabled = True ).uid
500
511
501
- delete_users_result = auth . delete_users ( [uid1 , uid2 , uid3 ])
512
+ delete_users_result = self . _slow_delete_users ( auth , [uid1 , uid2 , uid3 ])
502
513
assert delete_users_result .success_count == 3
503
514
assert delete_users_result .failure_count == 0
504
515
assert len (delete_users_result .errors ) == 0
@@ -510,16 +521,22 @@ def test_delete_multiple_users(self):
510
521
def test_is_idempotent (self ):
511
522
uid = auth .create_user ().uid
512
523
513
- delete_users_result = auth . delete_users ( [uid ])
524
+ delete_users_result = self . _slow_delete_users ( auth , [uid ])
514
525
assert delete_users_result .success_count == 1
515
526
assert delete_users_result .failure_count == 0
516
527
517
528
# Delete the user again, ensuring that everything still counts as a
518
529
# success.
519
- delete_users_result = auth . delete_users ( [uid ])
530
+ delete_users_result = self . _slow_delete_users ( auth , [uid ])
520
531
assert delete_users_result .success_count == 1
521
532
assert delete_users_result .failure_count == 0
522
533
534
+ def _slow_delete_users (self , auth , uids ):
535
+ """The batchDelete endpoint has a rate limit of 1 QPS. Use this test
536
+ helper to ensure you don't exceed the quota."""
537
+ time .sleep (1 )
538
+ return auth .delete_users (uids )
539
+
523
540
524
541
def test_revoke_refresh_tokens (new_user ):
525
542
user = auth .get_user (new_user .uid )
0 commit comments