def setUp(self): print("setUp test env") # init test env self.app = create_app() db.create_all() # init user data user = User(user_name="atushi", user_mail="*****@*****.**", user_password="******") user2 = User(user_name="John", user_mail="*****@*****.**", user_password="******") # init currency data ctypt = Crypt(crypt_id=1, crypt_name="BTC") self.portfolio_service = PortfolioService() db.session.add(user) db.session.commit() db.session.add(user2) db.session.commit() db.session.add(ctypt) db.session.commit()
def update(self, form_data, user_id): """ Update user data """ user = User.update_user_info(user_id) if not user: return False validator = UserCreateValidator() error = validator.validate(form_data) if not error: return error error = validator.user_form_validation(form_data) if not error: return error try: user.user_name = form_data["username"] user.user_mail = form_data["email"] user.user_password = form_data["password"] db.session.commit() except SQLAlchemyError: db.session.rollback() return False return True
def delete_currency_data(self, user_id, currency_name): """ Delete currency from portfolio """ delete_flag = False # get user info user = User.update_user_info(user_id) # get currency data user_data = user.crypts try: for i, name in enumerate(user_data): if name.crypt_name == currency_name: del user_data[i] delete_flag = True if not delete_flag: return False db.session.add(user) db.session.commit() except SQLAlchemyError: db.session.rollback() return False return True
def login(self, form_data): """ Login if user was already registered """ # check user is already existing in db return User.find_user_info(form_data["username"], form_data["email"], form_data["password"])
def get_user_info_by_user_id(self, user_id): """ Get user information for showing info in user desplay """ user = User.update_user_info(user_id) return user
def setUp(self): print("setUp test env") # init test env self.app = create_app() db.create_all() self.user = User() # init user data self.test_user = User(user_id=1, user_name="test", user_mail="*****@*****.**", user_password="******") db.session.add(self.test_user) db.session.commit()
def validate(self, form_data): """ Check duplicate data in User table """ exist_user = User.find_user_email_and_name(form_data["username"], form_data["email"]) return exist_user
def get_user_info_by_email(self, email): """ Get user information by eamil for reset password """ user = User.get_useid_by_email(email) if not user: return False return user
def get_user_info_by_user_id(self, user_id): """ Get user infomation for showing info in user desplay """ user = User.update_user_info(user_id) if not user: return "Can't find user" return user
def validate(self, user_id, crypt_name): """ Check currency name is in db """ crypt = Crypt.find_currency_name(crypt_name) # get user info user = User.update_user_info(user_id) if crypt is not None and user != False: return user, crypt return False
def setUp(self): print("setUp test env") # init test env self.app = create_app() db.create_all() self.user_create_validator = UserCreateValidator() # init user data user = User(user_name="atushi", user_mail="*****@*****.**", user_password="******") db.session.add(user) db.session.commit()
def setUp(self): print("setUp test env") # init test env self.app = create_app() db.create_all() self.user_service = UserService() # init user data self.user = User(user_name="Akon", user_mail="*****@*****.**", user_password="******") db.session.add(self.user) db.session.commit()
def setUp(self): print("setUp test env") # init test env self.app = create_app() db.create_all() # init user data self.user = User(user_name="atushi", user_mail="*****@*****.**", user_password="******") user2 = User(user_name="John", user_mail="*****@*****.**", user_password="******") # init currency data ctypt = Crypt(crypt_id=1, crypt_name="BTC") ctypt2 = Crypt(crypt_id=2, crypt_name="ETH") # init user crypto data user_crypto = UserCrypt(user_id=1, crypt_id=1, num_of_currency=2) user_crypto2 = UserCrypt(user_id=1, crypt_id=2, num_of_currency=2) self.crypto_validator = CryptValidation() db.session.add(self.user) db.session.commit() db.session.add(user2) db.session.commit() db.session.add(ctypt) db.session.commit() db.session.add(ctypt2) db.session.commit() db.session.add(user_crypto) db.session.commit() db.session.add(user_crypto2) db.session.commit()
def send_reset_mail(self, user): token = User.get_reset_token(user.user_id) msg = Message("Password Reset Request", sender="*****@*****.**", recipients=[user.user_mail]) msg.body = f'''To reset your password, type the below temp password on Reset password page: {"http://localhost:3000/form/resetPassword/" + token} If you didn't make this request simply ignore this mail and no change password ''' mail.send(msg) print("complete sending email")
def setUp(self): print("setUp test env") # init test env app = create_app() self.client = app.test_client() # init session with self.client.session_transaction() as session: session['user_id'] = 1 session['login'] = True db.create_all() # init user data self.user = User(user_name="atushi", user_mail="*****@*****.**", user_password="******") # init currency data ctypt = Crypt(crypt_id=1, crypt_name="BTC") ctypt2 = Crypt(crypt_id=2, crypt_name="ETH") # init user crypto data user_crypto = UserCrypt(user_id=1, crypt_id=1, num_of_currency=2) # init user data self.exist_user = { "username": "******", "email": "*****@*****.**", "password": "******", "confirmPassword": "******" } self.non_exist_user = { "username": "******", "email": "*****@*****.**", "password": "******", "confirmPassword": "******" } db.session.add(self.user) db.session.commit() db.session.add(ctypt) db.session.commit() db.session.add(ctypt2) db.session.commit() db.session.add(user_crypto) db.session.commit()
def login(self, form_data): """ Login if user was already registered """ validator = UserCreateValidator() error = validator.user_form_validation(form_data) if not error: return error # check user is already existing in db return User.find_user_info(form_data["username"], form_data["email"], form_data["password"])
def update(self, form_data, user_id): """ Update user data """ user = User.update_user_info(user_id) if not user: return "Can't find user id" try: user.user_name = form_data["new_username"] user.user_mail = form_data["new_email"] user.user_password = form_data["new_password"] db.session.commit() except SQLAlchemyError: db.session.rollback() return "db error" return True
def delete(self, user_id): """ Delete user data """ user = User.delete_user_info(user_id) user_portfolio = user.crypts try: user_portfolio.clear() db.session.add(user) db.session.commit() db.session.delete(user) db.session.commit() except SQLAlchemyError: db.session.rollback() return False return True
def validate_portfolio_data(self, user_id): """ Check user has currency data in db """ # get current portfolio info name_of_currency_list = [] num_of_currency_list = [] currency = [] user = User.update_user_info(user_id) user_data = user.crypts num_data = user.user_crypt if not user_data: return False for name, num in zip(user_data, num_data): name_of_currency_list.append(name.crypt_name) num_of_currency_list.append(num.num_of_currency) currency.append(name_of_currency_list) currency.append(num_of_currency_list) return currency
def register(self, form_data): """ Insert user data to User table """ validator = UserCreateValidator() error = validator.validate(form_data) if error != True: return error try: user = User(user_name=form_data["username"], user_mail=form_data["email"], user_password=form_data["password"]) db.session.add(user) db.session.commit() except SQLAlchemyError: db.session.rollback() return "db error" return True
def delete(self, form_data, user_id): """ Delete user data """ user = User.delete_user_info(user_id, form_data["username"], form_data["email"], form_data["password"]) if not user: return "User information doesn't match try again" user_portfolio = user.crypts try: user_portfolio.clear() db.session.add(user) db.session.commit() db.session.delete(user) db.session.commit() except SQLAlchemyError: db.session.rollback() return "db error" return True
def update_currency_data(self, user_id, currency_name, num_hold): """ update currency information """ # get user info user = User.update_user_info(user_id) # get currency data user_data = user.crypts num_data = user.user_crypt try: for name, num in zip(user_data, num_data): if name.crypt_name == currency_name: num.num_of_currency = num_hold break db.session.commit() except SQLAlchemyError: db.session.rollback() return False return True
def reset_password_by_token(self, token): return User.vertify_reset_token(token)
class TestUserDB(unittest.TestCase): def setUp(self): print("setUp test env") # init test env self.app = create_app() db.create_all() self.user = User() # init user data self.test_user = User(user_id=1, user_name="test", user_mail="*****@*****.**", user_password="******") db.session.add(self.test_user) db.session.commit() def tearDown(self): print("tearDown") db.session.remove() db.drop_all() def test_filter_register_user_email_and_name(self): # Valid data res = self.user.find_user_email_and_name(name="test", email="*****@*****.**") self.assertFalse(res) # exist name in db res = self.user.find_user_email_and_name(name="noexist", email="*****@*****.**") self.assertFalse(res) # exist email in db res = self.user.find_user_email_and_name(name="test", email="*****@*****.**") self.assertFalse(res) # non exist user name and email in db res = self.user.find_user_email_and_name(name="noexist", email="*****@*****.**") self.assertTrue(res) def test_find_login_user_data(self): # user put correct user info user = self.user.find_user_info(name="test", mail="*****@*****.**", password="******") self.assertEqual(user, self.test_user) # user put wrong name res = self.user.find_user_info(name="aaaa", mail="*****@*****.**", password="******") self.assertFalse(res) # user put wrong email res = self.user.find_user_info(name="test", mail="*****@*****.**", password="******") self.assertFalse(res) # user put wrong password res = self.user.find_user_info(name="test", mail="*****@*****.**", password="******") self.assertFalse(res) def test_find_user_by_id(self): user = self.user.update_user_info(user_id=1) self.assertEqual(user, self.test_user) user = self.user.delete_user_info(user_id=1) self.assertEqual(user, self.test_user) def test_get_user_by_email(self): user = self.user.get_useid_by_email(email="*****@*****.**") self.assertEqual(user, self.test_user) # non exist email in db res = self.user.get_useid_by_email(email="*****@*****.**") self.assertFalse(res)