@@ -208,6 +208,19 @@ def revoked_tokens():
208208 mock_user ['users' ][0 ]['validSince' ] = str (int (time .time ())+ 100 )
209209 return json .dumps (mock_user )
210210
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+
211224
212225class TestCreateCustomToken :
213226
@@ -471,6 +484,23 @@ def test_revoked_token_check_revoked(self, user_mgt_app, revoked_tokens, id_toke
471484 auth .verify_id_token (id_token , app = user_mgt_app , check_revoked = True )
472485 assert str (excinfo .value ) == 'The Firebase ID token has been revoked.'
473486
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+
474504 @pytest .mark .parametrize ('arg' , INVALID_BOOLS )
475505 def test_invalid_check_revoked (self , user_mgt_app , arg ):
476506 _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,
485515 assert claims ['admin' ] is True
486516 assert claims ['uid' ] == claims ['sub' ]
487517
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+
488526 @pytest .mark .parametrize ('id_token' , INVALID_JWT_ARGS .values (), ids = list (INVALID_JWT_ARGS ))
489527 def test_invalid_arg (self , user_mgt_app , id_token ):
490528 _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
622660 _instrument_user_manager (user_mgt_app , 200 , revoked_tokens )
623661 self ._assert_valid_cookie (cookie , app = user_mgt_app , check_revoked = False )
624662
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+
625686 @pytest .mark .parametrize ('cookie' , INVALID_JWT_ARGS .values (), ids = list (INVALID_JWT_ARGS ))
626687 def test_invalid_args (self , user_mgt_app , cookie ):
627688 _overwrite_cert_request (user_mgt_app , MOCK_REQUEST )
0 commit comments