Beispiel #1
0
 def test_constraints(self) -> None:
     """
     Test constraints
     :return:
     """
     AppUserRepository.create(
         AppUser('*****@*****.**', 'pass', AppUserRole.ADMIN))
     self.assertRaises(
         IntegrityError, AppUserRepository.create,
         AppUser('*****@*****.**', 'pass', AppUserRole.ADMIN))
def _assert_user_registration(normalized_username: str, password: str,
                              role: Optional[AppUserRole]):
    if not normalized_username:
        raise EntityUpdateException('Invalid username.')
    if not role:
        raise EntityUpdateException('Invalid user role.')
    if AppUserRepository.get_by_username(normalized_username):
        raise EntityUpdateException('The username is already in use.')

    _assert_user_password_validity(password)
Beispiel #3
0
    def test_app_user_crud(self) -> None:
        """
        Creates and fetch data from db
        :return:
        """
        # Insert one
        app_user = AppUser('*****@*****.**', 'pass', AppUserRole.ADMIN)
        app_user1 = AppUserRepository.create(app_user)
        self.assertEqual(app_user, app_user1)

        app_users = AppUserRepository.get_all()
        self.assertEqual(1, len(app_users))
        self.assertEqual(app_users[0], app_user1)

        # Insert and get many
        AppUserRepository.create_many([
            AppUser('*****@*****.**', 'pass', AppUserRole.SERVICE),
            AppUser('*****@*****.**', 'pass', AppUserRole.ADMIN)
        ])
        app_users = AppUserRepository.get_all()
        self.assertEqual(3, len(app_users))

        # Get by id
        app_user1_from_db = AppUserRepository.get_by_id(app_user1.id)
        self.assertEqual(app_user1, app_user1_from_db)
def register_user(username: str, password: str, role: AppUserRole) -> AppUser:
    """
    Registers new user for given email, password and role.
    """
    normalized_username = username.lower()
    _assert_user_registration(normalized_username, password, role)

    user = AppUser(
        username=normalized_username,
        pass_hash=encode_password(password),
        role=role,
    )
    return AppUserRepository.create(user)
Beispiel #5
0
def credentials_login(username: str, password: str) -> str:
    """
    Starts login flow for the given credentials. Returns valid JWT,
    if verification fails, some AuthenticationException is raised.
    """
    user = AppUserRepository.get_by_username(username)
    if not user or not password_matches_hash(user.pass_hash, password):
        logger.warning(f'User {username} credentials mismatch during login.')
        raise CredentialsMismatchException()

    conf = get_application_configuration()
    return encode_auth_token(
        user_id=user.id,
        user_role=user.role,
        expiration=timedelta(days=conf.jwt_expiration_days),
        jwt_secret=conf.jwt_secret)
Beispiel #6
0
    def create_job(app_user_id: int) -> Job:
        """
        Created new job with initial QUEUED status in transition.
        :param app_user_id:
        :return:
        """
        app_user = AppUserRepository.get_by_id(app_user_id)
        if app_user is None:
            raise InvalidArgumentException(
                f"App user {app_user_id} does not exist.")

        job = JobRepository.create(Job(app_user), False)
        JobTransitionRepository.create(
            JobTransition(JobStatusEnum.INITIAL, job), False)
        # pylint: disable=E1101
        JobTransitionRepository.get_session().commit()  # type: ignore
        return job
Beispiel #7
0
 def _create_app_user(self) -> AppUser:
     return AppUserRepository.create(
         AppUser('*****@*****.**', 'pass', AppUserRole.ADMIN))