def test_update_from_jwt_token(session): # pylint: disable=unused-argument """Assert User is updated from a JWT and an existing User model.""" token = { 'preferred_username': '******', 'firstname': 'Bobby', 'lasname': 'Joe', 'realm_access': { 'roles': ['edit', 'uma_authorization', 'basic'] }, 'sub': '1b20db59-19a0-4727-affe-c6f64309fd04' } user = User.create_from_jwt_token(token, 'Bobby', 'Joe') updated_token = { 'preferred_username': '******', 'firstname': 'Bob', 'lastname': 'Joe', 'realm_access': { 'roles': ['edit', 'uma_authorization', 'basic'] }, 'sub': '1b20db59-19a0-4727-affe-c6f64309fd04' } user = User.update_from_jwt_token(user, updated_token, 'Bob', 'Joe') assert user.firstname == 'Bob'
def test_update_from_jwt_token_no_user(session): # pylint:disable=unused-argument """Assert that a user is not updateable without a user (should return None).""" token = { 'preferred_username': '******', 'firstname': 'Bobby', 'lasname': 'Joe', 'realm_access': { 'roles': ['edit', 'uma_authorization', 'basic'] }, 'sub': '1b20db59-19a0-4727-affe-c6f64309fd04' } user = User.update_from_jwt_token(None, token, None, None) assert user is None
def save_from_jwt_token(cls, token: dict = None): """Save user to database (create/update).""" if not token: return None existing_user = UserModel.find_by_jwt_token(token) if existing_user is None: user_model = UserModel.create_from_jwt_token(token) else: user_model = UserModel.update_from_jwt_token(token, existing_user) if not user_model: return None user = User(user_model) return user
def save_from_jwt_token(cls, token: dict, request_json: Dict = None): """Save user to database (create/update).""" current_app.logger.debug('save_from_jwt_token') if not token: return None request_json = {} if not request_json else request_json is_anonymous_user = token.get('accessType', None) == AccessType.ANONYMOUS.value if not is_anonymous_user: existing_user = UserModel.find_by_jwt_token(token) else: existing_user = UserModel.find_by_username( token.get('preferred_username')) first_name, last_name = User._get_names(existing_user, request_json, token) if existing_user is None: user_model = UserModel.create_from_jwt_token( token, first_name, last_name) else: user_model = UserModel.update_from_jwt_token( existing_user, token, first_name, last_name, is_login=request_json.get('isLogin', False)) if not user_model: return None # if accepted , double check if there is a new TOS in place .IF so , update the flag to false if user_model.is_terms_of_use_accepted: document_type = DocumentType.TERMS_OF_USE_DIRECTOR_SEARCH.value if is_anonymous_user \ else DocumentType.TERMS_OF_USE.value # get the digit version of the terms of service..ie d1 gives 1 ; d2 gives 2..for proper comparison latest_version = util.digitify( DocumentService.find_latest_version_by_type(document_type)) current_version = util.digitify( user_model.terms_of_use_accepted_version) if latest_version > current_version: user_model.is_terms_of_use_accepted = False user = User(user_model) return user
def test_update_from_jwt_token_no_token(session, monkeypatch): # pylint:disable=unused-argument """Assert that a user is not updateable without a token (should return None).""" token = { 'preferred_username': '******', 'firstname': 'Bobby', 'lasname': 'Joe', 'realm_access': { 'roles': ['edit', 'uma_authorization', 'basic'] }, 'sub': '1b20db59-19a0-4727-affe-c6f64309fd04' } patch_token_info(token, monkeypatch) existing_user = User.create_from_jwt_token('Bobby', 'Joe') token = None patch_token_info(token, monkeypatch) user = User.update_from_jwt_token(existing_user, 'Bobby', 'Joe') assert user is None
def save_from_jwt_token(cls, token: dict = None): """Save user to database (create/update).""" current_app.logger.debug('save_from_jwt_token') if not token: return None if token.get('accessType', None) != AccessType.ANONYMOUS.value: existing_user = UserModel.find_by_jwt_token(token) else: existing_user = UserModel.find_by_username(token.get('preferred_username')) if existing_user is None: user_model = UserModel.create_from_jwt_token(token) else: user_model = UserModel.update_from_jwt_token(token, existing_user) if not user_model: return None user = User(user_model) return user