Ejemplo n.º 1
0
 def test_get_users_for_project(self):
     """
     Get all members of a project except the current user.
     """
     user_1 = model_project.User("test_user1", "test_name1", "test_pass", "*****@*****.**", False, "user")
     dao.store_entity(user_1)
     user_2 = model_project.User("test_user2", "test_name2", "test_pass", "*****@*****.**", False, "user")
     dao.store_entity(user_2)
     user_3 = model_project.User("test_user3", "test_name3", "test_pass", "*****@*****.**", False, "user")
     dao.store_entity(user_3)
     user_4 = model_project.User("test_user4", "test_name4", "test_pass", "*****@*****.**", False, "user")
     dao.store_entity(user_4)
     user_5 = model_project.User("test_user5", "test_name5", "test_pass", "*****@*****.**", False, "user")
     dao.store_entity(user_5)
     admin = dao.get_user_by_name("test_user1")
     member1 = dao.get_user_by_name("test_user2")
     member2 = dao.get_user_by_name("test_user5")
     data = dict(name="test_proj", description="test_desc", users=[member1.id, member2.id])
     project = ProjectService().store_project(admin, True, None, **data)
     all_users, members, pag = self.user_service.get_users_for_project(admin.username, project.id)
     assert len(members) == 2, "More members than there should be."
     assert len(all_users) == 5, "Admin should not be viewed as member. " \
                                 "Neither should users that were not part of the project's users list."
     assert pag == 1, "Invalid total pages number."
     for user in all_users:
         assert user.username != admin.username, "Admin is in members!"
Ejemplo n.º 2
0
 def _dao_add_user_forget_commit(self):
     """
     Test use case where you add user but forget to commit. This should be handled automatically.
     """
     self.session.add(
         model_project.User('username', 'name', 'password', 'mail', True,
                            'role'))
Ejemplo n.º 3
0
 def test_validate_user_non_existent(self):
     """
     Flow for trying to validate a user that doesn't exist in the database.
     """
     user = model_project.User("test_user", "test_name", "test_pass", "*****@*****.**", True, "user")
     dao.store_entity(user)
     assert not self.user_service.validate_user("test_user2"), "Validation done even tho user is non-existent"
Ejemplo n.º 4
0
 def test_validate_user_validated(self):
     """
     Flow for trying to validate a user that was already validated.
     """
     user = model_project.User("test_user", "test_name", "test_pass", "*****@*****.**", True, "user")
     dao.store_entity(user)
     assert not self.user_service.validate_user("test_user"), "Validation invalid."
Ejemplo n.º 5
0
 def test_validate_user_happy_flow(self):
     """
     Standard flow for a validate user action.
     """
     user = model_project.User("test_user", "test_name", "test_pass", "*****@*****.**", False, "user")
     dao.store_entity(user)
     assert self.user_service.validate_user("test_user"), "Validation failed when it shouldn't have."
Ejemplo n.º 6
0
    def test_get_users_for_project(self):
        """
        Get all members of a project except the current user.
        """
        user_ids = []
        for i in range(5):
            user = model_project.User("test_user" + str(i),
                                      "test_user_no" + str(i), "pass",
                                      "*****@*****.**")
            user = dao.store_entity(user)
            user_ids.append(user.id)
        admin = dao.get_user_by_name("test_user1")
        member1 = dao.get_user_by_name("test_user2")
        member2 = dao.get_user_by_name("test_user4")
        data = dict(name="test_proj",
                    description="test_desc",
                    users=[member1.id, member2.id])
        project = ProjectService().store_project(admin, True, None, **data)
        all_users, members, pag = self.user_service.get_users_for_project(
            admin.username, project.id)
        assert len(members) == 3, "More members than there should be."
        assert len(all_users) == 5
        assert pag == 1, "Invalid total pages number."

        admin_found_member = False
        for user in members:
            if user.username == admin.username:
                admin_found_member = True
        assert admin_found_member, "Admin is expected to be a project member"

        admin_found_editable = False
        for user in all_users:
            if user.username == admin.username:
                admin_found_editable = True
        assert not admin_found_editable, "Admin membership should not be editable"
Ejemplo n.º 7
0
 def test_is_username_valid(self):
     """
     Test the method that checks if a userName is valid or not (if it already exists
     in the database the userName is not valid).
     """
     user = model_project.User("test_user", "test_name", "test_pass", "*****@*****.**", False, "user")
     dao.store_entity(user)
     assert not self.user_service.is_username_valid("test_user"), "Should be False but got True"
     assert self.user_service.is_username_valid("test_user2"), "Should be True but got False"
Ejemplo n.º 8
0
 def test_check_login_bad_user(self):
     """
     Flow for entering a bad/invalid username.
     """
     user = model_project.User("test_user", 'test_name', hash_password("test_pass"), "*****@*****.**", True,
                               "user")
     dao.store_entity(user)
     available_users = dao.get_all_users()
     assert 2 == len(available_users)
     assert self.user_service.check_login("bad_user", "test_pass") is None, "Login succeeded with bad userName."
Ejemplo n.º 9
0
 def test_check_login_happy_flow(self):
     """
     Standard login flow with a valid username and password.
     """
     user = model_project.User("test_user", 'test_name', hash_password("test_pass"), "*****@*****.**", True,
                               "user")
     dao.store_entity(user)
     available_users = dao.get_all_users()
     assert 2 == len(available_users)
     assert self.user_service.check_login("test_user", "test_pass") is not None, "Login failed when it shouldn't."
Ejemplo n.º 10
0
    def test_get_members_pages(self):
        """
        Create many users (more than one page of members.
        Create a project and asign all Users as members.
        Test that 2 pages or Project Members are retrieved.
        Now remove extra users, to have only one page of members for the project.
        """
        user_ids = []
        for i in range(MEMBERS_PAGE_SIZE + 3):
            user = model_project.User("test_user_no" + str(i),
                                      "test_user_no" + str(i), "pass",
                                      "*****@*****.**")
            user = dao.store_entity(user)
            user_ids.append(user.id)

        admin = dao.get_user_by_name("test_user_no1")
        data = dict(name='test_proj', description='test_desc', users=user_ids)
        project = ProjectService().store_project(admin, True, None, **data)

        page_users, all_users, pag = self.user_service.get_users_for_project(
            admin.username, project.id, 2)
        assert len(page_users) == (MEMBERS_PAGE_SIZE + 3) % MEMBERS_PAGE_SIZE
        assert len(
            all_users) == MEMBERS_PAGE_SIZE + 3, 'Not all members returned'
        assert pag == 2, 'Invalid page number returned'

        for i in range(3):
            user = dao.get_user_by_name("test_user_no" + str(i + 2))
            self.user_service.delete_user(user.id)

        page_users, all_users, pag = self.user_service.get_users_for_project(
            "test_user_no1", project.id, 2)
        assert len(page_users) == 0, 'Paging not working properly'
        assert len(all_users) == MEMBERS_PAGE_SIZE, 'Not all members returned'
        assert pag == 1, 'Invalid page number returned'

        page_users, all_users, pag = self.user_service.get_users_for_project(
            "test_user_no1", project.id, 1)
        assert len(
            page_users) == MEMBERS_PAGE_SIZE, 'Paging not working properly'
        assert len(all_users) == MEMBERS_PAGE_SIZE, 'Not all members returned'
        assert pag == 1, 'Invalid page number returned'