def insert(self): g2 = self._session.query(Group).\ filter(Group.group_name == 'trusted-users').one() lawrence = User() lawrence.display_name = 'Lawrence L.' lawrence.email = '*****@*****.**' lawrence.password = '******' self._session.add(lawrence) g2.users.append(lawrence) bob = User() bob.display_name = 'Bob i.' bob.email = '*****@*****.**' bob.password = '******' self._session.add(bob) g2.users.append(bob) g1 = self._session.query(Group).\ filter(Group.group_name == 'users').one() reader = User() reader.display_name = 'John Reader' reader.email = '*****@*****.**' reader.password = '******' self._session.add(reader) g1.users.append(reader)
def insert(self): lawrence = User() lawrence.display_name = "Lawrence L." lawrence.email = "*****@*****.**" lawrence.password = "******" lawrence.profile = Profile.TRUSTED_USER lawrence.config = UserConfig() self._session.add(lawrence) bob = User() bob.display_name = "Bob i." bob.username = "******" bob.email = "*****@*****.**" bob.password = "******" bob.profile = Profile.TRUSTED_USER bob.config = UserConfig() self._session.add(bob) reader = User() reader.display_name = "John Reader" reader.email = "*****@*****.**" reader.password = "******" reader.profile = Profile.USER reader.config = UserConfig() self._session.add(reader)
def insert(self): g2 = self._session.query(Group).filter( Group.group_name == "trusted-users").one() lawrence = User() lawrence.display_name = "Lawrence L." lawrence.email = "*****@*****.**" lawrence.password = "******" self._session.add(lawrence) g2.users.append(lawrence) bob = User() bob.display_name = "Bob i." bob.email = "*****@*****.**" bob.password = "******" self._session.add(bob) g2.users.append(bob) g1 = self._session.query(Group).filter( Group.group_name == "users").one() reader = User() reader.display_name = "John Reader" reader.email = "*****@*****.**" reader.password = "******" self._session.add(reader) g1.users.append(reader)
def create_minimal_user( self, email, groups=[], save_now=False ) -> User: """Previous create_user method""" validator = TracimValidator() validator.add_validator('email', email, user_email_validator) validator.validate_all() self._check_email(email) user = User() user.email = email # 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] user.created = datetime.datetime.utcnow() if not groups: gapi = GroupApi( current_user=self._user, # User session=self._session, config=self._config, ) groups = [gapi.get_one(Group.TIM_USER)] for group in groups: user.groups.append(group) self._session.add(user) if save_now: self._session.flush() return user
def create_minimal_user(self, email, profile: typing.Optional[Profile] = None, save_now=False) -> User: """Previous create_user method""" 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() self._check_email(lowercase_email) user = User() user.email = lowercase_email # 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] user.created = datetime.datetime.utcnow() if not profile: profile = Profile.get_profile_from_slug( self._config.USER__DEFAULT_PROFILE) user.profile = profile self._session.add(user) if save_now: self._session.flush() return user
def insert(self): u = User() u.display_name = 'Global manager' u.email = '*****@*****.**' u.password = '******' self._session.add(u) uapi = UserApi(session=self._session, config=self._config, current_user=u) uapi.execute_created_user_actions(u) g1 = Group() g1.group_id = 1 g1.group_name = 'users' g1.display_name = 'Users' g1.users.append(u) self._session.add(g1) g2 = Group() g2.group_id = 2 g2.group_name = 'trusted-users' g2.display_name = 'Trusted Users' g2.users.append(u) self._session.add(g2) g3 = Group() g3.group_id = 3 g3.group_name = 'administrators' g3.display_name = 'Administrators' g3.users.append(u) self._session.add(g3)
def insert(self): u = User() u.display_name = 'Global manager' u.email = '*****@*****.**' u.password = '******' self._session.add(u) uapi = UserApi( session=self._session, config=self._config, current_user=u) uapi.execute_created_user_actions(u) g1 = Group() g1.group_id = 1 g1.group_name = 'users' g1.display_name = 'Users' g1.users.append(u) self._session.add(g1) g2 = Group() g2.group_id = 2 g2.group_name = 'trusted-users' g2.display_name = 'Trusted Users' g2.users.append(u) self._session.add(g2) g3 = Group() g3.group_id = 3 g3.group_name = 'administrators' g3.display_name = 'Administrators' g3.users.append(u) self._session.add(g3)
def create_minimal_user(self, email, groups=[], save_now=False) -> User: """Previous create_user method""" validator = TracimValidator() validator.add_validator('email', email, user_email_validator) validator.validate_all() self._check_email(email) user = User() user.email = email # 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] user.created = datetime.datetime.utcnow() if not groups: gapi = GroupApi( current_user=self._user, # User session=self._session, config=self._config, ) groups = [gapi.get_one(Group.TIM_USER)] for group in groups: user.groups.append(group) self._session.add(user) if save_now: self._session.flush() return user
def insert(self): u = User() u.display_name = "Global manager" u.email = "*****@*****.**" u.password = "******" self._session.add(u) g1 = Group() g1.group_id = 1 g1.group_name = "users" g1.display_name = "Users" g1.users.append(u) self._session.add(g1) g2 = Group() g2.group_id = 2 g2.group_name = "trusted-users" g2.display_name = "Trusted Users" g2.users.append(u) self._session.add(g2) g3 = Group() g3.group_id = 3 g3.group_name = "administrators" g3.display_name = "Administrators" g3.users.append(u) self._session.add(g3)
def insert(self): u = User() u.display_name = "Global manager" u.email = "*****@*****.**" u.password = "******" u.profile = Profile.ADMIN self._session.add(u)
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 test__unit__unicode__ok__no_display_name(self): email = "*****@*****.**" user = User() user.email = email assert user.__unicode__() == email
def test__unit__unicode__ok__no_display_name(self): email = '*****@*****.**' user = User() user.email = email assert user.__unicode__() == email
def test_unit__unicode__ok__nominal_case(self): name = 'Damien' email = '*****@*****.**' user = User() user.display_name = name user.email = email assert user.__unicode__() == name
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__unicode__ok__nominal_case(self): name = "Damien" email = "*****@*****.**" user = User() user.display_name = name user.email = email assert user.__unicode__() == name
def test_unit__repr__ok__nominal_case(self): name = 'Damien' email = '*****@*****.**' user = User() user.display_name = name user.email = email assert user.__repr__() == "<User: email='*****@*****.**', display='Damien'>" # nopep8
def test_unit__repr__ok__nominal_case(self): name = "Damien" email = "*****@*****.**" user = User() user.display_name = name user.email = email assert user.__repr__( ) == "<User: email='*****@*****.**', username=None display='Damien'>"
def test_unit__create_minimal_user_and_set_email__ok__nominal_case(self): u = User() u.email = "bob@bob" u.password = "******" u.auth_type = AuthType.INTERNAL u.display_name = "bob" api = UserApi(current_user=u, session=self.session, config=self.app_config) assert u.email == "bob@bob" api.set_email(u, "pass", "newbobemail@bob") assert u is not None assert u.email == "newbobemail@bob"
def test_unit__validate_password__false__null_password(self): # Check bug #70 fixed # http://tracim.org/workspaces/4/folders/5/threads/70 name = "Damien" email = "*****@*****.**" user = User() user.display_name = name user.email = email assert user.validate_password("") is False
def test_unit__validate_password__false__null_password(self): # Check bug #70 fixed # http://tracim.org/workspaces/4/folders/5/threads/70 name = 'Damien' email = '*****@*****.**' user = User() user.display_name = name user.email = email assert user.validate_password('') is False
def test_unit__validate_password__false__bad_password(self): """ Check if validate_password can correctly check if password is an uncorrect correct one """ name = "Damien" email = "*****@*****.**" password = "******" user = User() user.display_name = name user.email = email user.password = password assert user.validate_password("uncorrect_password") is False
def test_unit__validate_password__false__empty_password(self): """ Check if validate_password failed if not password """ name = "Damien" email = "*****@*****.**" password = None user = User() user.display_name = name user.email = email user.password = password assert user.validate_password(password) is False assert user.validate_password("") is False
def test_unit__create_minimal_user_and_set_password__ok__nominal_case(self): u = User() u.email = 'bob@bob' u.password = '******' u.auth_type = AuthType.INTERNAL u.display_name = 'bob' api = UserApi( current_user=u, session=self.session, config=self.app_config, ) assert u.email == 'bob@bob' api.set_email(u,'pass','newbobemail@bob') assert u is not None assert u.email == 'newbobemail@bob'
def test_unit__validate_password__false__bad_password(self): """ Check if validate_password can correctly check if password is an uncorrect correct one """ name = 'Damien' email = '*****@*****.**' password = '******' user = User() user.display_name = name user.email = email user.password = password assert user.validate_password('uncorrect_password') is False
def test_unit__validate_password__false__empty_password(self): """ Check if validate_password failed if not password """ name = 'Damien' email = '*****@*****.**' password = None user = User() user.display_name = name user.email = email user.password = password assert user.validate_password(password) is False assert user.validate_password('') is False
def test__unit__validate_password__ok__nominal_case(self): """ Check if validate_password can correctly check if password i the correct one """ name = 'Damien' email = '*****@*****.**' password = '******' user = User() user.display_name = name user.email = email user.password = password assert user.validate_password(password) is True
def test__unit__validate_password__ok__nominal_case(self): """ Check if validate_password can correctly check if password i the correct one """ name = "Damien" email = "*****@*****.**" password = "******" user = User() user.display_name = name user.email = email user.password = password assert user.validate_password(password) is True
def test_unit__create_minimal_user_and_set_password__ok__nominal_case( self): u = User() u.email = 'bob@bob' u.password = '******' u.auth_type = AuthType.INTERNAL u.display_name = 'bob' api = UserApi( current_user=u, session=self.session, config=self.app_config, ) assert u.email == 'bob@bob' api.set_email(u, 'pass', 'newbobemail@bob') assert u is not None assert u.email == 'newbobemail@bob'
def test_unit__create_minimal_user_and_set_password__ok__nominal_case( self, session, app_config ): u = User() u.email = "bob@bob" u.password = "******" u.auth_type = AuthType.INTERNAL u.display_name = "bob" api = UserApi(current_user=u, session=session, config=app_config) assert u.validate_password("pass") api.set_password(u, "pass", "newpass", "newpass") assert u is not None assert u.email == "bob@bob" assert u.display_name == "bob" assert u.validate_password("newpass") assert not u.validate_password("pass")
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.is_active = False user.is_deleted = True self.safe_update(user) return user
def test_unit__password__ok__nominal_case(self): """ Check if password can be set and hashed password can be retrieve. Verify if hashed password is not same as password. """ name = 'Damien' email = '*****@*****.**' password = '******' user = User() user.display_name = name user.email = email assert user._password is None user.password = password assert user._password is not None assert user._password != password assert user.password == user._password
def test_unit__reset_token__ok__nominal_case(self): email = '*****@*****.**' user = User() user.email = email assert user.auth_token is None with freeze_time("1999-12-31 23:59:59"): user.ensure_auth_token(validity_seconds=5) assert user.auth_token assert user.auth_token_created == datetime.now() token = user.auth_token token_time = user.auth_token_created with freeze_time("2003-12-31 23:59:59"): user.reset_tokens() assert user.auth_token != token assert user.auth_token_created != token_time assert user.auth_token_created == datetime.now()
def test_unit__reset_token__ok__nominal_case(self): email = "*****@*****.**" user = User() user.email = email assert user.auth_token is None with freeze_time("1999-12-31 23:59:59"): user.ensure_auth_token(validity_seconds=5) assert user.auth_token assert user.auth_token_created == datetime.now() token = user.auth_token token_time = user.auth_token_created with freeze_time("2003-12-31 23:59:59"): user.reset_tokens() assert user.auth_token != token assert user.auth_token_created != token_time assert user.auth_token_created == datetime.now()
def test_unit__password__ok__nominal_case(self, session): """ Check if password can be set and hashed password can be retrieve. Verify if hashed password is not same as password. """ name = "Damien" email = "*****@*****.**" password = "******" user = User() user.display_name = name user.email = email assert user._password is None user.password = password assert user._password is not None assert user._password != password assert user.password == user._password
def update( self, user: User, name: str = None, email: str = None, password: str = None, timezone: str = None, lang: str = None, groups: typing.Optional[typing.List[Group]] = None, do_save=True, ) -> User: if name is not None: user.display_name = name if email is not None and email != user.email: self._check_email(email) user.email = email if password is not None: user.password = password if timezone is not None: user.timezone = timezone if lang is not None: user.lang = lang if groups is not None: if self._user and self._user == user: raise UserCantChangeIsOwnProfile( "User {} can't change is own profile".format(user.user_id)) # INFO - G.M - 2018-07-18 - Delete old groups for group in user.groups: if group not in groups: user.groups.remove(group) # INFO - G.M - 2018-07-18 - add new groups for group in groups: if group not in user.groups: user.groups.append(group) if do_save: self.save(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 test_unit__create__ok__nominal_case(self): self.session.flush() transaction.commit() name = 'Damien' email = '*****@*****.**' user = User() user.display_name = name user.email = email self.session.add(user) self.session.flush() transaction.commit() new_user = self.session.query(User).filter(User.display_name == name).one() # nopep8 assert new_user.display_name == name assert new_user.email == email assert new_user.email_address == email
def test_unit__create__ok__nominal_case(self, session): session.flush() transaction.commit() name = "Damien" email = "*****@*****.**" user = User() user.display_name = name user.email = email session.add(user) session.flush() transaction.commit() new_user = session.query(User).filter(User.display_name == name).one() assert new_user.display_name == name assert new_user.email == email assert new_user.email_address == email
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 create_minimal_user(self, email, groups=[], save_now=False) -> User: """Previous create_user method""" self._check_email(email) user = User() user.email = email user.display_name = email.split('@')[0] if not groups: gapi = GroupApi( current_user=self._user, # User session=self._session, config=self._config, ) groups = [gapi.get_one(Group.TIM_USER)] for group in groups: user.groups.append(group) self._session.add(user) if save_now: self._session.flush() 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, groups: typing.Optional[typing.List[Group]]=None, do_save=True, ) -> User: 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('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 not auth_type in self._config.AUTH_TYPES: raise UserAuthTypeDisabled( 'Can\'t update user "{}" auth_type with unavailable value "{}".'.format( user.email, auth_type ) ) user.auth_type = auth_type if email is not None and email != user.email: self._check_email_modification_allowed(user) self._check_email(email) user.email = email 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 groups is not None: if self._user and self._user == user: raise UserCantChangeIsOwnProfile( "User {} can't change is own profile".format(user.user_id) ) # INFO - G.M - 2018-07-18 - Delete old groups for group in user.groups: if group not in groups: user.groups.remove(group) # INFO - G.M - 2018-07-18 - add new groups for group in groups: if group not in user.groups: user.groups.append(group) if do_save: self.save(user) return user