def test_the_is_token_revoked_method_of_user_repository(app, mocker):
    """
  GIVEN the TokenRepository instance
  WHEN the is_token_revoked() method is call
  THEN check session method calls
  """

    from app.model import TokenRepository, Token
    token_repository = TokenRepository()
    token_repository.session = UnifiedAlchemyMagicMock()

    token = Token()
    token.id = 1
    token.jti = "27d1b1a3-45b4-4a5f-83ed-b823f5ea1dbe"
    token.token_type = "access"
    token.user_identity = "test"
    token.revoked = True
    token.expires = datetime.now()

    token_repository.session.add(token)
    token_repository.session.commit()

    decoded_token = mocker.MagicMock()
    decoded_token['jti'] = token.jti

    result = token_repository.is_token_revoked(decoded_token)
    assert result
    (token_repository.session.query.return_value.filter_by.
     assert_called_once_with(jti=decoded_token['jti']))
def test_the_change_token_revoking_method_of_user_repository(app):
    """
  GIVEN the TokenRepository instance
  WHEN the save() method is call
  THEN check session method calls and the token revoke value
  """

    from app.model import TokenRepository, Token
    token_repository = TokenRepository()
    token_repository.session = UnifiedAlchemyMagicMock()

    token = Token()
    token.id = 1
    token.jti = "27d1b1a3-45b4-4a5f-83ed-b823f5ea1dbe"
    token.token_type = "access"
    token.user_identity = "test"
    token.revoked = False
    token.expires = datetime.now()

    token_repository.session.add(token)
    token_repository.session.commit()

    token_repository.change_token_revoking(1, "test", True)
    (token_repository.session.query.return_value.filter_by.
     assert_called_once_with(id=1, user_identity="test"))
    assert token.revoked == True
def test_the_revoke_all_tokens_method_of_user_repository(app):
    """
  GIVEN the TokenRepository instance
  WHEN the revoke_all_tokens() method is call
  THEN check session method calls
  """

    from app.model import TokenRepository, Token
    token_repository = TokenRepository()
    token_repository.session = UnifiedAlchemyMagicMock()

    acc_token = Token()
    acc_token.id = 1
    acc_token.jti = "27d1b1a3-45b4-4a5f-83ed-b823f5ea1dbe"
    acc_token.token_type = "access"
    acc_token.user_identity = "test"
    acc_token.revoked = False
    acc_token.expires = datetime.now()
    token_repository.session.add(acc_token)

    ref_token = Token()
    ref_token.id = 2
    ref_token.jti = "27d1b1a3-45b4-4a5f-83ed-b823f5ea1dbd"
    ref_token.token_type = "refresh"
    ref_token.user_identity = "test"
    ref_token.revoked = False
    ref_token.expires = datetime.now()
    token_repository.session.add(ref_token)

    token_repository.session.commit()

    token_repository.revoke_all_tokens("test")
    (token_repository.session.query.return_value.filter_by.
     assert_called_once_with(user_identity="test"))
    (token_repository.session.query.return_value.filter_by.return_value.update.
     assert_called_once_with({Token.revoked: True}))