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!"
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'))
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"
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."
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."
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"
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"
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."
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."
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'