def resolve_user(self, info, user_id: str) -> User: user_repo = UserRepository() user_info = user_repo.get_user_by_id(user_id) return User( user_id=user_info.user_id, name=user_info.name, login=user_info.login, access_token=user_info.access_token )
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)
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()