Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
    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
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
 def insert(self):
     u = User()
     u.display_name = "Global manager"
     u.email = "*****@*****.**"
     u.password = "******"
     u.profile = Profile.ADMIN
     self._session.add(u)
Ejemplo n.º 12
0
    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'>"
Ejemplo n.º 13
0
    def test__unit__unicode__ok__no_display_name(self):

        email = "*****@*****.**"

        user = User()
        user.email = email

        assert user.__unicode__() == email
Ejemplo n.º 14
0
    def test__unit__unicode__ok__no_display_name(self):

        email = '*****@*****.**'

        user = User()
        user.email = email

        assert user.__unicode__() == email
Ejemplo n.º 15
0
    def test_unit__unicode__ok__nominal_case(self):
        name = 'Damien'
        email = '*****@*****.**'

        user = User()
        user.display_name = name
        user.email = email

        assert user.__unicode__() == name
Ejemplo n.º 16
0
 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)
Ejemplo n.º 17
0
    def test_unit__unicode__ok__nominal_case(self):
        name = "Damien"
        email = "*****@*****.**"

        user = User()
        user.display_name = name
        user.email = email

        assert user.__unicode__() == name
Ejemplo n.º 18
0
    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
Ejemplo n.º 19
0
    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'>"
Ejemplo n.º 20
0
 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"
Ejemplo n.º 21
0
    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
Ejemplo n.º 22
0
    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
Ejemplo n.º 23
0
    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
Ejemplo n.º 24
0
    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
Ejemplo n.º 25
0
 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'
Ejemplo n.º 26
0
    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
Ejemplo n.º 27
0
    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
Ejemplo n.º 28
0
    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
Ejemplo n.º 29
0
    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
Ejemplo n.º 30
0
    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
Ejemplo n.º 31
0
 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'
Ejemplo n.º 32
0
 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")
Ejemplo n.º 33
0
 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
Ejemplo n.º 34
0
    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
Ejemplo n.º 35
0
    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()
Ejemplo n.º 36
0
    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()
Ejemplo n.º 37
0
    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
Ejemplo n.º 38
0
    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
Ejemplo n.º 39
0
    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
Ejemplo n.º 40
0
    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
Ejemplo n.º 41
0
    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
Ejemplo n.º 42
0
    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
Ejemplo n.º 43
0
    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
Ejemplo n.º 44
0
    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