コード例 #1
0
class TestUserRepository(unittest.TestCase):
    @patch('src.repository.UserRepository.MongoConfiguration')
    def setUp(self, mongo_configuration_mock):
        self.__mongo_configuration_instance = mongo_configuration_mock.return_value
        self.__database = mongo_configuration_mock.database
        self.__user_repository = UserRepository()

    def test_should_add_new_user(self):
        new_user = UserLogin("user_id", "name", "login", "password")

        self.__user_repository.add_new_user(new_user)

        self.assertTrue(self.__mongo_configuration_instance.database.
                        user_collection.insert_one.called)

    def test_should_get_all_users(self):
        self.__user_repository.get_users()

        self.assertTrue(self.__mongo_configuration_instance.database.
                        user_collection.find.called)

    def test_should_get_user_by_id(self):
        self.__user_repository.get_user_by_id("5c7c0c22fd8a2f36f6cdea65")

        self.assertTrue(self.__mongo_configuration_instance.database.
                        user_collection.find.called)

    def test_should_update_access_token(self):
        user = UserLogin("5c7c0c22fd8a2f36f6cdea65", "name", "login",
                         "password")
        user.access_token = "access_token"

        self.__user_repository.set_access_token(user)

        self.assertTrue(self.__mongo_configuration_instance.database.
                        user_collection.update_one.called)
コード例 #2
0
class UserBusiness:
    def __init__(self):
        self.__user_repository = UserRepository()
        self.__access_token_business = AccessTokenBusiness()
        self.__logger = Logger().get_logger()

    def add_new_user(self, user: UserLogin):
        self.__logger.info(
            f"Validating the insertion of new user: {user.login}")
        existent_user = self.__user_repository.get_user_by_login(user.login)

        if existent_user is not None:
            raise UserAlreadyExistsException()

        new_user = self.__user_repository.add_new_user(user)
        self.__logger.info(f"New user ID: {new_user.user_id}")
        return new_user

    def get_users(self):
        users = self.__user_repository.get_users()
        return users

    def get_user_by_id(self, user_id: str):
        user = self.__user_repository.get_user_by_id(user_id)

        if user is None:
            raise UserNotFoundException()

        return user

    def get_user_by_login(self, login: str):
        user = self.__user_repository.get_user_by_login(login)

        if user is None:
            raise UserNotFoundException()

        return user

    def authenticate(self, user: UserLogin):
        self.__logger.info(
            f"Login process for user - Authentication: {user.login}")

        user_login_information = self.__user_repository.get_user_by_login(
            user.login)

        if user_login_information is None:
            raise AuthenticationException()

        if Validator.is_wrong_credentials(user, user_login_information):
            raise AuthenticationException()

        return user_login_information

    def get_access_token(self, user: UserLogin):
        self.__logger.info(
            f"Login process for user - Access Token: {user.user_id}")
        access_token = self.__access_token_business.create_access_token(user)
        user.access_token = access_token

        created = self.__user_repository.set_access_token(user)

        if not created:
            raise AccessTokenException()

        return user

    def validate_access_token(self, user: UserLogin):
        self.__logger.info(f"Validating access token for user: {user.login}")
        user_login_information = self.__user_repository.get_user_by_login(
            user.login)

        if Validator.is_wrong_access_token(user, user_login_information):
            raise NonValidAccessTokenException()