@@ -208,6 +208,19 @@ def revoked_tokens():
208
208
mock_user ['users' ][0 ]['validSince' ] = str (int (time .time ())+ 100 )
209
209
return json .dumps (mock_user )
210
210
211
+ @pytest .fixture (scope = 'module' )
212
+ def user_disabled ():
213
+ mock_user = json .loads (testutils .resource ('get_user.json' ))
214
+ mock_user ['users' ][0 ]['disabled' ] = True
215
+ return json .dumps (mock_user )
216
+
217
+ @pytest .fixture (scope = 'module' )
218
+ def user_disabled_and_revoked ():
219
+ mock_user = json .loads (testutils .resource ('get_user.json' ))
220
+ mock_user ['users' ][0 ]['disabled' ] = True
221
+ mock_user ['users' ][0 ]['validSince' ] = str (int (time .time ())+ 100 )
222
+ return json .dumps (mock_user )
223
+
211
224
212
225
class TestCreateCustomToken :
213
226
@@ -471,6 +484,23 @@ def test_revoked_token_check_revoked(self, user_mgt_app, revoked_tokens, id_toke
471
484
auth .verify_id_token (id_token , app = user_mgt_app , check_revoked = True )
472
485
assert str (excinfo .value ) == 'The Firebase ID token has been revoked.'
473
486
487
+ @pytest .mark .parametrize ('id_token' , valid_tokens .values (), ids = list (valid_tokens ))
488
+ def test_disabled_user_check_revoked (self , user_mgt_app , user_disabled , id_token ):
489
+ _overwrite_cert_request (user_mgt_app , MOCK_REQUEST )
490
+ _instrument_user_manager (user_mgt_app , 200 , user_disabled )
491
+ with pytest .raises (auth .UserDisabledError ) as excinfo :
492
+ auth .verify_id_token (id_token , app = user_mgt_app , check_revoked = True )
493
+ assert str (excinfo .value ) == 'The user record is disabled.'
494
+
495
+ @pytest .mark .parametrize ('id_token' , valid_tokens .values (), ids = list (valid_tokens ))
496
+ def test_check_disabled_before_revoked (
497
+ self , user_mgt_app , user_disabled_and_revoked , id_token ):
498
+ _overwrite_cert_request (user_mgt_app , MOCK_REQUEST )
499
+ _instrument_user_manager (user_mgt_app , 200 , user_disabled_and_revoked )
500
+ with pytest .raises (auth .UserDisabledError ) as excinfo :
501
+ auth .verify_id_token (id_token , app = user_mgt_app , check_revoked = True )
502
+ assert str (excinfo .value ) == 'The user record is disabled.'
503
+
474
504
@pytest .mark .parametrize ('arg' , INVALID_BOOLS )
475
505
def test_invalid_check_revoked (self , user_mgt_app , arg ):
476
506
_overwrite_cert_request (user_mgt_app , MOCK_REQUEST )
@@ -485,6 +515,14 @@ def test_revoked_token_do_not_check_revoked(self, user_mgt_app, revoked_tokens,
485
515
assert claims ['admin' ] is True
486
516
assert claims ['uid' ] == claims ['sub' ]
487
517
518
+ @pytest .mark .parametrize ('id_token' , valid_tokens .values (), ids = list (valid_tokens ))
519
+ def test_disabled_user_do_not_check_revoked (self , user_mgt_app , user_disabled , id_token ):
520
+ _overwrite_cert_request (user_mgt_app , MOCK_REQUEST )
521
+ _instrument_user_manager (user_mgt_app , 200 , user_disabled )
522
+ claims = auth .verify_id_token (id_token , app = user_mgt_app , check_revoked = False )
523
+ assert claims ['admin' ] is True
524
+ assert claims ['uid' ] == claims ['sub' ]
525
+
488
526
@pytest .mark .parametrize ('id_token' , INVALID_JWT_ARGS .values (), ids = list (INVALID_JWT_ARGS ))
489
527
def test_invalid_arg (self , user_mgt_app , id_token ):
490
528
_overwrite_cert_request (user_mgt_app , MOCK_REQUEST )
@@ -622,6 +660,29 @@ def test_revoked_cookie_does_not_check_revoked(self, user_mgt_app, revoked_token
622
660
_instrument_user_manager (user_mgt_app , 200 , revoked_tokens )
623
661
self ._assert_valid_cookie (cookie , app = user_mgt_app , check_revoked = False )
624
662
663
+ @pytest .mark .parametrize ('cookie' , valid_cookies .values (), ids = list (valid_cookies ))
664
+ def test_disabled_user_check_revoked (self , user_mgt_app , user_disabled , cookie ):
665
+ _overwrite_cert_request (user_mgt_app , MOCK_REQUEST )
666
+ _instrument_user_manager (user_mgt_app , 200 , user_disabled )
667
+ with pytest .raises (auth .UserDisabledError ) as excinfo :
668
+ auth .verify_session_cookie (cookie , app = user_mgt_app , check_revoked = True )
669
+ assert str (excinfo .value ) == 'The user record is disabled.'
670
+
671
+ @pytest .mark .parametrize ('cookie' , valid_cookies .values (), ids = list (valid_cookies ))
672
+ def test_check_disabled_before_revoked (
673
+ self , user_mgt_app , user_disabled_and_revoked , cookie ):
674
+ _overwrite_cert_request (user_mgt_app , MOCK_REQUEST )
675
+ _instrument_user_manager (user_mgt_app , 200 , user_disabled_and_revoked )
676
+ with pytest .raises (auth .UserDisabledError ) as excinfo :
677
+ auth .verify_session_cookie (cookie , app = user_mgt_app , check_revoked = True )
678
+ assert str (excinfo .value ) == 'The user record is disabled.'
679
+
680
+ @pytest .mark .parametrize ('cookie' , valid_cookies .values (), ids = list (valid_cookies ))
681
+ def test_disabled_user_does_not_check_revoked (self , user_mgt_app , user_disabled , cookie ):
682
+ _overwrite_cert_request (user_mgt_app , MOCK_REQUEST )
683
+ _instrument_user_manager (user_mgt_app , 200 , user_disabled )
684
+ self ._assert_valid_cookie (cookie , app = user_mgt_app , check_revoked = False )
685
+
625
686
@pytest .mark .parametrize ('cookie' , INVALID_JWT_ARGS .values (), ids = list (INVALID_JWT_ARGS ))
626
687
def test_invalid_args (self , user_mgt_app , cookie ):
627
688
_overwrite_cert_request (user_mgt_app , MOCK_REQUEST )
0 commit comments