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 )
async def post(self): """ --- description: Post User. tags: - User produces: - application/json responses: "200": description: User registered successful "404": description: User not found "409": description: User already exists """ params = await self.request.json() schema = { "login": { "required": True, "type": "string" }, "password": { "required": True, "type": "string" }, } await validate(params, schema) user_repository = UserRepository(self.db) user = await user_repository.get_by_login(params.get('login')) if not user: raise web.HTTPNotFound(reason='User not found') user = user[0] if not user.check_password(params.get('password')): raise web.HTTPBadRequest(reason='Wrong password') delattr(user, 'password') encoded = jwt.encode({'user': { 'id': str(user.id), 'login': user.login, }}, JWT_SECRET, algorithm='HS256') return web.json_response({ "token": encoded, })
async def get(self) -> web.Response: """ --- description: User me (information. tags: - User produces: - application/json responses: "200": description: User info "404": description: User not found """ repository = UserRepository(self.db) user = await repository.get_by_id(self.user.get('id')) if not user: raise web.HTTPNotFound(reason='User not found') return web.json_response(UserModelSerializer(user[0]).serialize())
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)
from src.domain.User import User from werkzeug.security import check_password_hash, generate_password_hash from src.repository.UserRepository import UserRepository userRepository = UserRepository() def authenticate(username, password): user = userRepository.findByUserName(username) # user = User.query.filter_by(username=username).first() if user and check_password_hash(user.password, password): return user def identity(payload): user_id = payload['identity'] return User.query.get(user_id)
def resolve_users(self, info) -> list: user_repo = UserRepository() return user_repo.get_users()
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 __init__(self): self.__user_repository = UserRepository() self.__access_token_business = AccessTokenBusiness() self.__logger = Logger().get_logger()
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()