def register(self, username: str, password: str, repeat_password: str): """ Register new user if user is new and passwords match :param username: :param password: :param repeat_password: :return: """ response = {"flash_message": "Invalid Credentials"} new_user = User({ "username": username, "password": password, }) # Check if User exists is_existing_user = self.get_user(new_user.get_username()) if is_existing_user and is_existing_user.get_username() == username: response["flash_message"] = "username already in use" elif password == repeat_password: # hashing user password before storing in DB new_user.hash_password() create = self.create_user(new_user) # returns None if create works if create: response[ "flash_message"] = "There was a problem when trying to create this user, Try Again!" else: response["flash_message"] = "Registration Successful!" else: response["flash_message"] = "Passwords do not match" return response["flash_message"]
def test_hash_and_check_password(self): given_password = "******" new_user = User({ "username": "******", "password": "******" }) new_user.hash_password() self.assertTrue(self.user.check_password(given_password))
def update_user_information(self, update_information: User): """ Proxy method call for create operation for dataStorage class. That simplifies the abstraction. single place to change if the model driver (Mongo,SQL) changes. :param update_information: User() :return: None or Error String """ return self.model.update(update_information.get_id(), update_information.get_dict())
def setUp(self): user_json = open('test/data/user.json') self.logged_user_json = json.load(user_json) user_json.close() self.manage_users = ManageUsers() self.manage_users.get_user = MagicMock( return_value=User(self.logged_user_json))
def create_user(self, new_user: User): """ Proxy method call for create operation for dataStorage class. That simplifies the abstraction. single place to change if the model driver (Mongo,SQL) changes. :param new_user: :param username: User() :return: None or Error String """ return self.model.create_one(new_user.get_dict())
def get_by_id(self, user_id: str): """ Get user Instance by Id :param user_id: :return: single User Instance """ user = self.model.find_by_id(ObjectId(user_id)) if user: return User(user)
def get_user(self, username: str): """ queries data storage and return User() instance :param: username: str :return: User() Object with data from data storage """ user = self.model.find_by_field_name_and_value(username, 'username') if user: return User(user)
def test_fail_update_password_unmatching_fields(self): """ Test update of password. Expect to return warning message and never call DB for update information """ user = User(self.logged_user_json) updated_information_from_form = { 'password': '******', 'repeat_password': '******' } update_details = self.manage_users.update_details( user, updated_information_from_form) self.assertEqual(update_details["flash_message"], "Password do not match, couldn't update information")
def test_correct_update_password_matching_fields(self): """ Test update of password Expect to succeed and return success flash message """ user = User(self.logged_user_json) updated_information_from_form = { 'password': '******', 'repeat_password': '******' } self.manage_users.update_user_information = MagicMock( return_value=None) update_details = self.manage_users.update_details( user, updated_information_from_form) self.assertEqual(update_details["flash_message"], "Information Updated successfully")
def test_first_and_last_update(self): """ Test update of first and last name. Expect to succeed and return success flash message """ user = User(self.logged_user_json) updated_information_from_form = { 'first_name': 'Will', 'last_name': 'Farna' } self.manage_users.update_user_information = MagicMock( return_value=None) update_details = self.manage_users.update_details( user, updated_information_from_form) self.assertEqual(update_details["flash_message"], "Information Updated successfully")
class UserTest(unittest.TestCase): def setUp(self): file = open('test/data/user.json') user_data = json.load(file) file.close() self.user = User(user_data) def test_get_username(self): self.assertEqual('willfarnaby', self.user.get_username()) def test_get_user_first_name(self): self.assertEqual('William', self.user.get_first_name()) def test_get_user_last_name(self): self.assertEqual('Farnaby', self.user.get_last_name()) def test_get_favorite_books(self): favorite_books = self.user.get_favorite_books() self.assertIn("A book", favorite_books) self.assertEqual(2, len(favorite_books)) def test_is_moderator(self): self.assertFalse(self.user.is_moderator()) def test_check_password(self): given_password = "******" self.assertTrue(self.user.check_password(given_password)) def test_get_dict(self): user_repr = self.user.get_dict() self.assertEqual("willfarnaby", user_repr['username']) self.assertFalse(user_repr['moderator']) def test_hash_and_check_password(self): given_password = "******" new_user = User({ "username": "******", "password": "******" }) new_user.hash_password() self.assertTrue(self.user.check_password(given_password))
def test_update_correct_fields_db_error_response(self): """ Test update of password Expect to succeed and return success flash message """ user = User(self.logged_user_json) updated_information_from_form = { 'password': '******', 'repeat_password': '******', 'first_name': 'Will', 'last_name': 'Farna' } self.manage_users.update_user_information = MagicMock( return_value="Error") update_details = self.manage_users.update_details( user, updated_information_from_form) self.assertEqual( update_details["flash_message"], "Something went wrong whe trying to update information, Try Again." )
def setUp(self): user_json = open('test/data/user.json') self.user_from_query = json.load(user_json) user_json.close() self.manage_user = ManageUsers() self.manage_user.get_user = MagicMock(return_value=User(self.user_from_query))
def setUp(self): file = open('test/data/user.json') user_data = json.load(file) file.close() self.user = User(user_data)