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"]
Example #2
0
 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")
Example #11
0
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))
Example #14
0
 def setUp(self):
     file = open('test/data/user.json')
     user_data = json.load(file)
     file.close()
     self.user = User(user_data)