def test_unit__repr__ok__with_username(self): user = User() user.display_name = "Damien" user.email = "*****@*****.**" user.username = "******" assert user.__repr__( ) == "<User: email='*****@*****.**', username='******' display='Damien'>"
def insert(self): u = User() u.display_name = "Global manager" u.username = "******" u.email = "*****@*****.**" u.password = "******" u.profile = Profile.ADMIN u.config = UserConfig() self._session.add(u)
def test_unit__create__error__already_used_username(self, session): session.flush() transaction.commit() user1 = User() user1.username = "******" user2 = User() user2.username = "******" session.add(user1) session.add(user2) with pytest.raises(Exception) as caught: session.flush() # NOTE BS 20200427: caught exception depend as database engine, but we expect # "unique" or "duplicate" string in exception message assert "unique" in str(caught.value).lower() or "duplicate" in str( caught.value).lower()
def test_unit__create__ok__only_username(self, session): session.flush() transaction.commit() username = "******" user = User() user.username = username session.add(user) session.flush() transaction.commit() new_user = session.query(User).filter(User.username == username).one() assert new_user.username == username
def anonymize_user( self, user: User, anonymized_user_display_name: typing.Optional[str] = None) -> User: """ :param user: user to anonymize_if_required :return: user_id """ hash = str(uuid.uuid4().hex) user.display_name = ( anonymized_user_display_name or self.app_config.DEFAULT_ANONYMIZED_USER_DISPLAY_NAME) user.email = ANONYMIZED_USER_EMAIL_PATTERN.format(hash=hash) user.username = None user.is_active = False user.is_deleted = True self.safe_update(user) return user
def test_unit__create__ok__username_and_email(self, session): session.flush() transaction.commit() username = "******" email = "*****@*****.**" user = User() user.email = email user.username = username session.add(user) session.flush() transaction.commit() new_user = session.query(User).filter(User.email == email).one() assert new_user.email == email assert new_user.email_address == email assert new_user.username == username
def create_minimal_user( self, email: typing.Optional[str] = None, username: typing.Optional[str] = None, profile: typing.Optional[Profile] = None, save_now=False, ) -> User: """Previous create_user method""" if not email: if self._config.EMAIL__REQUIRED: raise EmailRequired("Email is required to create an user") if not username: raise EmailOrUsernameRequired( "Email or username is required to create an user") lowercase_email = email.lower() if email is not None else None validator = TracimValidator() validator.add_validator("email", lowercase_email, user_email_validator) validator.validate_all() if lowercase_email is not None: self._check_email(lowercase_email) if username is not None: self.check_username(username) user = User() user.email = lowercase_email user.username = username # TODO - G.M - 2018-11-29 - Check if this default_value can be # incorrect according to user_public_name_validator user.display_name = email.split("@")[0] if email else username user.created = datetime.datetime.utcnow() if not profile: profile = Profile.get_profile_from_slug( self._config.USER__DEFAULT_PROFILE) user.profile = profile if save_now: self.save(user) return user
def update( self, user: User, name: str = None, email: str = None, password: str = None, timezone: str = None, lang: str = None, auth_type: AuthType = None, profile: typing.Optional[Profile] = None, allowed_space: typing.Optional[int] = None, username: str = None, do_save=True, ) -> User: """Update given user instance with given parameters""" validator = TracimValidator() validator.add_validator("name", name, user_public_name_validator) validator.add_validator("password", password, user_password_validator) validator.add_validator("email", email, user_email_validator) validator.add_validator("username", name, user_username_validator) validator.add_validator("timezone", timezone, user_timezone_validator) validator.add_validator("lang", lang, user_lang_validator) validator.validate_all() if name is not None: user.display_name = name if auth_type is not None: if (auth_type not in [AuthType.UNKNOWN, AuthType.REMOTE] and auth_type not in self._config.AUTH_TYPES): raise UserAuthTypeDisabled( 'Can\'t update user "{}" auth_type with unavailable value "{}".' .format(user.login, auth_type)) user.auth_type = auth_type if email is not None: lowercase_email = email.lower() if lowercase_email != user.email: self._check_email_modification_allowed(user) self._check_email(lowercase_email) user.email = lowercase_email if username is not None: if username != user.username: self.check_username(username) user.username = username if password is not None: self._check_password_modification_allowed(user) user.password = password if timezone is not None: user.timezone = timezone if lang is not None: user.lang = lang if profile is not None: if self._user and self._user == user: raise UserCantChangeIsOwnProfile( "User {} can't change is own profile".format(user.user_id)) user.profile = profile if allowed_space is not None: user.allowed_space = allowed_space if do_save: self.save(user) return user