Ejemplo n.º 1
0
    def test_create_project_happy_flow(self):

        user1 = TestFactory.create_user('test_user1')
        user2 = TestFactory.create_user('test_user2')
        initial_projects = dao.get_projects_for_user(self.test_user.id)
        assert len(initial_projects) == 0, "Database reset probably failed!"

        TestFactory.create_project(self.test_user,
                                   'test_project',
                                   "description",
                                   users=[user1.id, user2.id])

        resulting_projects = dao.get_projects_for_user(self.test_user.id)
        assert len(
            resulting_projects) == 1, "Project with valid data not inserted!"
        project = resulting_projects[0]
        assert project.name == "test_project", "Invalid retrieved project name"
        assert project.description == "description", "Description do no match"

        users_for_project = dao.get_members_of_project(project.id)
        for user in users_for_project:
            assert user.id in [user1.id, user2.id,
                               self.test_user.id], "Users not stored properly."
        assert os.path.exists(
            os.path.join(TvbProfile.current.TVB_STORAGE,
                         FilesHelper.PROJECTS_FOLDER,
                         "test_project")), "Folder for project was not created"
 def test_create_project_happy_flow(self):
     """
     Standard flow for creating a new project.
     """
     user1 = TestFactory.create_user('test_user1')
     user2 = TestFactory.create_user('test_user2')
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 0,
                      "Database reset probably failed!")
     TestFactory.create_project(self.test_user,
                                'test_project',
                                users=[user1.id, user2.id])
     resulting_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(resulting_projects), 1,
                      "Project with valid data not inserted!")
     project = resulting_projects[0]
     if project.name == "test_project":
         self.assertEqual(project.description, "description",
                          "Description do no match")
         users_for_project = dao.get_members_of_project(project.id)
         for user in users_for_project:
             self.assertTrue(user.id in [user1.id, user2.id],
                             "Users not stored properly.")
     self.assertTrue(
         os.path.exists(
             os.path.join(TvbProfile.current.TVB_STORAGE,
                          FilesHelper.PROJECTS_FOLDER, "test_project")),
         "Folder for project was not created")
 def test_remove_project_happy_flow(self):
     """
     Standard flow for deleting a project.
     """
     inserted_project = TestFactory.create_project(self.test_user, 'test_proj')
     project_root = self.structure_helper.get_project_folder(inserted_project)
     projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(projects), 1, "Initializations failed!") 
     self.assertTrue(os.path.exists(project_root), "Something failed at insert time!")
     self.project_service.remove_project(inserted_project.id)
     projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(projects), 0, "Project was not deleted!")  
     self.assertFalse(os.path.exists(project_root), "Root folder not deleted!")  
Ejemplo n.º 4
0
 def test_remove_project_happy_flow(self):
     """
     Standard flow for deleting a project.
     """
     inserted_project = TestFactory.create_project(self.test_user, 'test_proj')
     project_root = self.storage_interface.get_project_folder(inserted_project.name)
     projects = dao.get_projects_for_user(self.test_user.id)
     assert len(projects) == 1, "Initializations failed!"
     assert os.path.exists(project_root), "Something failed at insert time!"
     self.project_service.remove_project(inserted_project.id)
     projects = dao.get_projects_for_user(self.test_user.id)
     assert len(projects) == 0, "Project was not deleted!"
     assert not os.path.exists(project_root), "Root folder not deleted!"
 def test_find_project_happy_flow(self):
     """
     Standard flow for finding a project by it's id.
     """
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 0,
                      "Database reset probably failed!")
     inserted_project = TestFactory.create_project(self.test_user,
                                                   'test_project')
     self.assertTrue(
         self.project_service.find_project(inserted_project.id) is not None,
         "Project not found !")
     dao_returned_project = dao.get_project_by_id(inserted_project.id)
     service_returned_project = self.project_service.find_project(
         inserted_project.id)
     self.assertEqual(
         dao_returned_project.id, service_returned_project.id,
         "Data returned from service is different from data returned by DAO."
     )
     self.assertEqual(
         dao_returned_project.name, service_returned_project.name,
         "Data returned from service is different than  data returned by DAO."
     )
     self.assertEqual(
         dao_returned_project.description,
         service_returned_project.description,
         "Data returned from service is different from data returned by DAO."
     )
     self.assertEqual(
         dao_returned_project.members, service_returned_project.members,
         "Data returned from service is different from data returned by DAO."
     )
Ejemplo n.º 6
0
 def transactional_teardown_method(self):
     """
     Remove project folders and clean up database.
     """
     created_projects = dao.get_projects_for_user(self.test_user.id)
     for project in created_projects:
         self.structure_helper.remove_project_structure(project.name)
     self.delete_project_folders()
 def test_remove_project_happy_flow(self):
     """
     Standard flow for deleting a project.
     """
     inserted_project = TestFactory.create_project(self.test_user,
                                                   'test_proj')
     project_root = self.structure_helper.get_project_folder(
         inserted_project)
     projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(projects), 1, "Initializations failed!")
     self.assertTrue(os.path.exists(project_root),
                     "Something failed at insert time!")
     self.project_service.remove_project(inserted_project.id)
     projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(projects), 0, "Project was not deleted!")
     self.assertFalse(os.path.exists(project_root),
                      "Root folder not deleted!")
 def test_remove_project_wrong_id(self):
     """
     Flow for deleting a project giving an un-existing id.
     """
     TestFactory.create_project(self.test_user, 'test_proj')
     projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(projects), 1, "Initializations failed!") 
     self.assertRaises(ProjectServiceException, self.project_service.remove_project, 99)   
 def tearDown(self):
     """
     Remove project folders and clean up database.
     """
     created_projects = dao.get_projects_for_user(self.test_user.id)
     for project in created_projects:
         self.structure_helper.remove_project_structure(project.name)
     self.delete_project_folders()
 def retrieve_projects_for_user(self, user_id, current_page=1):
     """
     Return a list with all Projects visible for current user.
     """
     start_idx = PROJECTS_PAGE_SIZE * (current_page - 1)
     total = dao.get_projects_for_user(user_id, is_count=True)
     end_idx = (PROJECTS_PAGE_SIZE if total >= start_idx + PROJECTS_PAGE_SIZE else total - start_idx)
     available_projects = dao.get_projects_for_user(user_id, start_idx, end_idx)
     pages_no = total // PROJECTS_PAGE_SIZE + (1 if total % PROJECTS_PAGE_SIZE else 0)
     for prj in available_projects:
         fns, sta, err, canceled = dao.get_operation_numbers(prj.id)
         prj.operations_finished = fns
         prj.operations_started = sta
         prj.operations_error = err
         prj.operations_canceled = canceled
     self.logger.debug("Displaying " + str(len(available_projects)) + " projects in UI for user " + str(user_id))
     return available_projects, pages_no
 def test_remove_project_wrong_id(self):
     """
     Flow for deleting a project giving an un-existing id.
     """
     TestFactory.create_project(self.test_user, 'test_proj')
     projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(projects), 1, "Initializations failed!")
     self.assertRaises(ProjectServiceException,
                       self.project_service.remove_project, 99)
Ejemplo n.º 12
0
 def test_remove_project_wrong_id(self):
     """
     Flow for deleting a project giving an un-existing id.
     """
     TestFactory.create_project(self.test_user, 'test_proj')
     projects = dao.get_projects_for_user(self.test_user.id)
     assert len(projects) == 1, "Initializations failed!"
     with pytest.raises(ProjectServiceException):
         self.project_service.remove_project(99)   
Ejemplo n.º 13
0
 def test_create_project_empty_name(self):
     """
     Creating a project with an empty name.
     """
     data = dict(name="", description="test_description", users=[])
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     assert len(initial_projects) == 0, "Database reset probably failed!"
     with pytest.raises(ProjectServiceException):
         self.project_service.store_project(self.test_user, True, None, **data)
Ejemplo n.º 14
0
 def test_create_project_empty_name(self):
     """
     Creating a project with an empty name.
     """
     data = dict(name="", description="test_description", users=[])
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 0, "Database reset probably failed!")
     self.assertRaises(ProjectServiceException, self.project_service.store_project, 
                       self.test_user, True, None, **data)
Ejemplo n.º 15
0
 def retrieve_all_user_projects(user_id,
                                page_start=0,
                                page_size=PROJECTS_PAGE_SIZE):
     """
     Return a list with all projects visible for current user, without pagination.
     """
     return dao.get_projects_for_user(user_id,
                                      page_start=page_start,
                                      page_size=page_size)
Ejemplo n.º 16
0
 def test_remove_project_wrong_id(self):
     """
     Flow for deleting a project giving an un-existing id.
     """
     TestFactory.create_project(self.test_user, 'test_proj')
     projects = dao.get_projects_for_user(self.test_user.id)
     assert len(projects) == 1, "Initializations failed!"
     with pytest.raises(ProjectServiceException):
         self.project_service.remove_project(99)
Ejemplo n.º 17
0
 def test_find_project_unexisting(self):
     """
     Searching for an un-existing project.
     """
     data = dict(name="test_project", description="test_description", users=[])
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 0, "Database reset probably failed!")
     self.project_service.store_project(self.test_user, True, None, **data)
     self.assertRaises(ProjectServiceException, self.project_service.find_project, 99)  
 def test_find_project_unexisting(self):
     """
     Searching for an un-existing project.
     """
     data = dict(name="test_project", description="test_description", users=[])
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 0, "Database reset probably failed!")
     project = self.project_service.store_project(self.test_user, True, None, **data)
     # fetch a likely non-existing project. Previous project id plus a 'big' offset
     self.assertRaises(ProjectServiceException, self.project_service.find_project, project.id + 1033)
Ejemplo n.º 19
0
 def retrieve_projects_for_user(self, user_id, current_page=1):
     """
     Return a list with all Projects visible for current user.
     """
     start_idx = PROJECTS_PAGE_SIZE * (current_page - 1)
     total = dao.get_projects_for_user(user_id, is_count=True)
     available_projects = dao.get_projects_for_user(user_id, start_idx, PROJECTS_PAGE_SIZE)
     pages_no = total // PROJECTS_PAGE_SIZE + (1 if total % PROJECTS_PAGE_SIZE else 0)
     for prj in available_projects:
         fns, sta, err, canceled, pending = dao.get_operation_numbers(prj.id)
         prj.operations_finished = fns
         prj.operations_started = sta
         prj.operations_error = err
         prj.operations_canceled = canceled
         prj.operations_pending = pending
         prj.disk_size = dao.get_project_disk_size(prj.id)
         prj.disk_size_human = format_bytes_human(prj.disk_size)
     self.logger.debug("Displaying " + str(len(available_projects)) + " projects in UI for user " + str(user_id))
     return available_projects, pages_no
Ejemplo n.º 20
0
 def test_create_project_happy_flow(self):
     """
     Standard flow for creating a new project.
     """
     user1 = TestFactory.create_user('test_user1')
     user2 = TestFactory.create_user('test_user2')
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 0, "Database reset probably failed!")
     TestFactory.create_project(self.test_user, 'test_project', users=[user1.id, user2.id])
     resulting_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(resulting_projects), 1, "Project with valid data not inserted!")  
     project = resulting_projects[0]
     if project.name == "test_project":
         self.assertEqual(project.description, "description", "Description do no match")
         users_for_project = dao.get_members_of_project(project.id)
         for user in users_for_project:
             self.assertTrue(user.id in [user1.id, user2.id], "Users not stored properly.")
     self.assertTrue(os.path.exists(os.path.join(TvbProfile.current.TVB_STORAGE, FilesHelper.PROJECTS_FOLDER,
                                                 "test_project")), "Folder for project was not created")
Ejemplo n.º 21
0
 def retrieve_projects_for_user(self, user_id, current_page=1):
     """
     Return a list with all Projects visible for current user.
     """
     start_idx = PROJECTS_PAGE_SIZE * (current_page - 1)
     total = dao.get_projects_for_user(user_id, is_count=True)
     available_projects = dao.get_projects_for_user(user_id, start_idx, PROJECTS_PAGE_SIZE)
     pages_no = total // PROJECTS_PAGE_SIZE + (1 if total % PROJECTS_PAGE_SIZE else 0)
     for prj in available_projects:
         fns, sta, err, canceled, pending = dao.get_operation_numbers(prj.id)
         prj.operations_finished = fns
         prj.operations_started = sta
         prj.operations_error = err
         prj.operations_canceled = canceled
         prj.operations_pending = pending
         prj.disk_size = dao.get_project_disk_size(prj.id)
         prj.disk_size_human = format_bytes_human(prj.disk_size)
     self.logger.debug("Displaying " + str(len(available_projects)) + " projects in UI for user " + str(user_id))
     return available_projects, pages_no
Ejemplo n.º 22
0
 def test_edit_project_unexisting(self):
     """
     Trying to edit an un-existing project.
     """
     selected_project = TestFactory.create_project(self.test_user, 'test_proj')
     self.structure_helper.get_project_folder(selected_project)
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 1, "Database initialization probably failed!")
     data = dict(name="test_project", description="test_description", users=[])
     self.assertRaises(ProjectServiceException, self.project_service.store_project,
                       self.test_user, False, 99, **data)
Ejemplo n.º 23
0
 def test_edit_project_unexisting(self):
     """
     Trying to edit an un-existing project.
     """
     selected_project = TestFactory.create_project(self.test_user, 'test_proj')
     self.storage_interface.get_project_folder(selected_project.name)
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     assert len(initial_projects) == 1, "Database initialization probably failed!"
     data = dict(name="test_project", description="test_description", users=[])
     with pytest.raises(ProjectServiceException):
         self.project_service.store_project(self.test_user, False, 99, **data)
Ejemplo n.º 24
0
 def test_find_project_unexisting(self):
     """
     Searching for an un-existing project.
     """
     data = dict(name="test_project", description="test_description", users=[])
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     assert len(initial_projects) == 0, "Database reset probably failed!"
     project = self.project_service.store_project(self.test_user, True, None, **data)
     # fetch a likely non-existing project. Previous project id plus a 'big' offset
     with pytest.raises(ProjectServiceException):
         self.project_service.find_project(project.id + 1033)
Ejemplo n.º 25
0
 def test_find_project_unexisting(self):
     """
     Searching for an un-existing project.
     """
     data = dict(name="test_project",
                 description="test_description",
                 users=[])
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 0,
                      "Database reset probably failed!")
     self.project_service.store_project(self.test_user, True, None, **data)
     self.assertRaises(ProjectServiceException,
                       self.project_service.find_project, 99)
Ejemplo n.º 26
0
 def test_editone_create(self):
     """
     Create a new project using the editone page.
     """
     data = dict(name="newly_created",
                 description="Some test descript.",
                 users=[],
                 administrator=self.test_user.username,
                 visited_pages=None)
     cherrypy.request.method = "POST"
     self._expect_redirect('/project/viewall', self.project_c.editone, save=True, **data)
     projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(projects), 2)
 def test_editone_create(self):
     """
     Create a new project using the editone page.
     """
     data = dict(name="newly_created",
                 description="Some test descript.",
                 users=[],
                 administrator=self.test_user.username,
                 visited_pages=None)
     cherrypy.request.method = "POST"
     self._expect_redirect('/project/viewall', self.project_c.editone, save=True, **data)
     projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(projects), 2)
Ejemplo n.º 28
0
 def test_edit_project_happy_flow(self):
     """
     Standard flow for editing an existing project.
     """
     selected_project = TestFactory.create_project(self.test_user, 'test_proj')
     proj_root = self.structure_helper.get_project_folder(selected_project)
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 1, "Database initialization probably failed!")
     
     edited_data = dict(name="test_project", description="test_description", users=[])
     edited_project = self.project_service.store_project(self.test_user, False, selected_project.id, **edited_data)
     self.assertFalse(os.path.exists(proj_root), "Previous folder not deleted")
     proj_root = self.structure_helper.get_project_folder(edited_project)
     self.assertTrue(os.path.exists(proj_root), "New folder not created!")
     self.assertNotEqual(selected_project.name, edited_project.name, "Project was no changed!")  
Ejemplo n.º 29
0
    def test_edit_project_happy_flow(self):
        """
        Standard flow for editing an existing project.
        """
        selected_project = TestFactory.create_project(self.test_user, 'test_proj')
        proj_root = self.storage_interface.get_project_folder(selected_project.name)
        initial_projects = dao.get_projects_for_user(self.test_user.id)
        assert len(initial_projects) == 1, "Database initialization probably failed!"

        edited_data = dict(name="test_project", description="test_description", users=[])
        edited_project = self.project_service.store_project(self.test_user, False, selected_project.id, **edited_data)
        assert not os.path.exists(proj_root), "Previous folder not deleted"
        proj_root = self.storage_interface.get_project_folder(edited_project.name)
        assert os.path.exists(proj_root), "New folder not created!"
        assert selected_project.name != edited_project.name, "Project was no changed!"
 def test_edit_project_unexisting(self):
     """
     Trying to edit an un-existing project.
     """
     selected_project = TestFactory.create_project(self.test_user,
                                                   'test_proj')
     self.structure_helper.get_project_folder(selected_project)
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 1,
                      "Database initialization probably failed!")
     data = dict(name="test_project",
                 description="test_description",
                 users=[])
     self.assertRaises(ProjectServiceException,
                       self.project_service.store_project, self.test_user,
                       False, 99, **data)
Ejemplo n.º 31
0
 def test_handle_event(self):
     """
     Test a defined handler for the store project method.
     """
     path_to_events = os.path.dirname(__file__)
     event_handlers.read_events([path_to_events])
     data = dict(name="test_project", description="test_description", users=[])
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 0, "Database reset probably failed!")
     test_project = self.project_service.store_project(self.test_user, True, None, **data)
     # Operations will start asynchronously; Give them time.
     time.sleep(1)
     gid = dao.get_last_data_with_uid("test_uid")
     self.assertTrue(gid is not None, "Nothing was stored in database!")
     datatype = dao.get_datatype_by_gid(gid)
     self.assertEqual(datatype.type, "Datatype1", "Wrong data stored!")
     self.project_service._remove_project_node_files(test_project.id, gid)
Ejemplo n.º 32
0
 def test_find_project_happy_flow(self):
     """
     Standard flow for finding a project by it's id.
     """
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 0, "Database reset probably failed!")
     inserted_project = TestFactory.create_project(self.test_user, 'test_project')
     self.assertTrue(self.project_service.find_project(inserted_project.id) is not None, "Project not found !")
     dao_returned_project = dao.get_project_by_id(inserted_project.id)
     service_returned_project = self.project_service.find_project(inserted_project.id)
     self.assertEqual(dao_returned_project.id, service_returned_project.id,
                      "Data returned from service is different from data returned by DAO.")
     self.assertEqual(dao_returned_project.name, service_returned_project.name, 
                      "Data returned from service is different than  data returned by DAO.")  
     self.assertEqual(dao_returned_project.description, service_returned_project.description,
                      "Data returned from service is different from data returned by DAO.")        
     self.assertEqual(dao_returned_project.members, service_returned_project.members,
                      "Data returned from service is different from data returned by DAO.")
Ejemplo n.º 33
0
 def test_handle_event(self):
     """
     Test a defined handler for the store project method.
     """
     path_to_events = os.path.dirname(__file__)
     eventhandler.read_events([path_to_events])
     data = dict(name="test_project",
                 description="test_description",
                 users=[])
     initial_projects = dao.get_projects_for_user(self.test_user.id)
     self.assertEqual(len(initial_projects), 0,
                      "Database reset probably failed!")
     test_project = self.project_service.store_project(
         self.test_user, True, None, **data)
     # Operations will start asynchronously; Give them time.
     time.sleep(1)
     gid = dao.get_last_data_with_uid("test_uid")
     self.assertTrue(gid is not None, "Nothing was stored in database!")
     datatype = dao.get_datatype_by_gid(gid)
     self.assertEqual(datatype.type, "Datatype1", "Wrong data stored!")
     self.project_service._remove_project_node_files(test_project.id, gid)
    def test_edit_project_happy_flow(self):
        """
        Standard flow for editing an existing project.
        """
        selected_project = TestFactory.create_project(self.test_user,
                                                      'test_proj')
        proj_root = self.structure_helper.get_project_folder(selected_project)
        initial_projects = dao.get_projects_for_user(self.test_user.id)
        self.assertEqual(len(initial_projects), 1,
                         "Database initialization probably failed!")

        edited_data = dict(name="test_project",
                           description="test_description",
                           users=[])
        edited_project = self.project_service.store_project(
            self.test_user, False, selected_project.id, **edited_data)
        self.assertFalse(os.path.exists(proj_root),
                         "Previous folder not deleted")
        proj_root = self.structure_helper.get_project_folder(edited_project)
        self.assertTrue(os.path.exists(proj_root), "New folder not created!")
        self.assertNotEqual(selected_project.name, edited_project.name,
                            "Project was no changed!")