Esempio n. 1
0
 def test_download_fail_for_quota(self, download_mock, get_content_mock):
     expected_result = {
         "node_name": default_code._get_test_node().get_name(),
         "result": False,
         "type": "space_error"
     }
     result = self.model_test.download_node(default_code._get_test_node(),
                                            "test", 0)
     get_content_mock.assert_called_once()
     self.assertEqual(download_mock.call_count, 0)
     self.assertEqual(result, expected_result)
Esempio n. 2
0
 def test_download_success(self, download_mock, get_content_mock):
     expected_result = {
         "node_name": default_code._get_test_node().get_name(),
         "result": True,
         "type": ""
     }
     result = self.model_test.download_node(default_code._get_test_node(),
                                            "test", 100)
     download_mock.assert_called_once()
     get_content_mock.assert_called_once()
     self.assertEqual(result, expected_result)
Esempio n. 3
0
 def test_download_fail_for_network_error(self, download_mock,
                                          get_content_mock):
     expected_result = {
         "node_name": default_code._get_test_node().get_name(),
         "result": False,
         "type": "network_error"
     }
     result = self.model_test.download_node(default_code._get_test_node(),
                                            "test", 100)
     download_mock.assert_called_once()
     get_content_mock.assert_called_once()
     self.assertEqual(result, expected_result)
 def test_get_only_folders(self):
     file_name = ["ciao", "mamma"]
     first_folder_node = default_code._get_test_node()
     second_file_node = default_code._get_file_test_node(file_name[0])
     file_node = default_code._get_file_test_node(file_name[1])
     result = tree_comparator._get_only_folders([first_folder_node,
                                                 second_file_node,
                                                 file_node])
     self.assertEqual([first_folder_node], result)
class RemoteFileWidgetTest(default_code.DefaultCode):
    @patch('src.algorithm.tree_builder.get_tree_from_node_id',
           return_value=default_code._get_test_node())
    def setUp(self, mocked) -> None:
        """Metodo che viene chiamato prima di ogni metodo"""
        super().setUp()
        self.test_model = MainModel()
        self.test_file_view = RemoteFileView(self.test_model)
        self.test_file = RemoteFile(default_code._get_file_test_node("test"))
        self.test_file_widget = RemoteFileWidget(
            self.test_file, self.test_model.settings_model)

    def tearDown(self):
        """Metodo che viene chiamato dopo ogni metodo"""

    def test_double_click_present(self):
        self.test_model.settings_model.add_id_to_sync_list("CLIENT_NODE")
        self.test_file_widget.Sl_on_double_click()
        result = self.test_model.settings_model.is_id_in_sync_list(
            self.test_file.id)
        self.assertEqual(result, True)
        self.test_model.settings_model.remove_id_from_sync_list("CLIENT_NODE")

    def test_double_click_absent(self):
        self.test_model.settings_model.add_id_to_sync_list("NOT_CLIENT_NODE")
        self.test_file_widget.Sl_on_double_click()
        result = self.test_model.settings_model.is_id_in_sync_list(
            self.test_file.id)
        self.assertEqual(result, False)
        self.test_model.settings_model.remove_id_from_sync_list(
            "NOT_CLIENT_NODE")

    @patch('PySide6.QtGui.QPainter.drawPixmap')
    def test_show_synced(self, mocked):
        self.test_file_widget.show_synced()
        mocked.assert_called()

    @patch('PySide6.QtGui.QPainter.drawPixmap')
    def test_files_status_changed_synced(self, mocked):
        self.test_model.settings_model.add_id_to_sync_list("CLIENT_NODE")
        self.test_file_widget.Sl_on_file_status_changed()
        mocked.assert_called()
        self.test_model.settings_model.remove_id_from_sync_list("CLIENT_NODE")

    @patch('PySide6.QtGui.QPainter.drawPixmap')
    def test_files_status_changed_not_synced(self, mocked):
        self.test_file_widget.Sl_on_file_status_changed()
        mocked.assert_not_called()
    def test_compare_folders_server_new_folder(self):
        # Imposto cartella server
        server_node = default_code.create_folder_with_folders(self.FILE_NAME)
        # imposto cartella client
        client_node = default_code.create_folder_with_folders(self.FILE_NAME)
        # Imposto file mancante
        missing_file = default_code._get_test_node()
        # Aggiungo file mancante
        server_node.add_node(missing_file)
        result = tree_comparator.compareFolders(client_node, server_node)
        # expected result
        exp_result = [{
            'node': missing_file,
            'path': missing_file.get_payload().path,
            'action': Actions.SERVER_NEW_FOLDER}]

        self.assertEqual(result, exp_result)
class RemoteDirectoryWidgetTest(default_code.DefaultCode):

    @patch(
        'src.algorithm.tree_builder.get_tree_from_node_id',
        return_value=default_code._get_test_node())
    def setUp(self, mocked) -> None:
        super().setUp()
        node = default_code.create_folder_with_files(["testFile"])
        base_dir = RemoteDirectory(node)
        self.test_model = MainModel()
        self.test_view = RemoteFileView(self.test_model)
        self.test_dir = RemoteDirectoryWidget(base_dir, self.test_view)

    def tearDown(self) -> None:
        super().tearDown()

    def test_double_clicked_action(self):
        self.test_dir.double_clicked_action()
class CompareClientSnapshotTest(default_code.DefaultCode):

    def setUp(self) -> None:
        super().setUp()
        self.env_settings = super().get_env_settings()
        self.context = CompareSnapClient()

    def tearDown(self) -> None:
        super().tearDown()

    @patch('src.algorithm.tree_comparator.compareFolders', return_value="")
    def test_compare_snap_client_equal_client_strategy(self, mocked_fun):
        test_node = _get_test_node()
        self.context.check(test_node, test_node, ClientStrategy())
        mocked_fun.assert_called_once()

    @patch('src.algorithm.tree_comparator.compareFolders', return_value="")
    def test_compare_snap_client_equal_manual_strategy(self, mocked_fun):
        test_node = _get_test_node()
        self.context.check(test_node, test_node, ManualStrategy())
        mocked_fun.assert_called_once()

    @patch('src.algorithm.tree_comparator.compareFolders',
           return_value=ResultObj(Actions.SERVER_NEW_FOLDER, 1))
    @patch('src.algorithm.os_handler.create_folder')
    @patch('src.algorithm.tree_builder.get_tree_from_node_id', return_value=_get_test_node())
    def test_compare_snap_client_server_new_folder(self, mock_get_tree, mock_create_folder, mock_3):
        test_node = _get_test_node()
        self.context.check(test_node, test_node, ClientStrategy())
        self.assertEqual(mock_get_tree.call_count, 3)
        self.assertEqual(mock_create_folder.call_count, 3)
        mock_3.assert_called_once()

    @patch('src.algorithm.tree_comparator.compareFolders',
           return_value=ResultObj(Actions.SERVER_NEW_FILE, 1))
    @patch('src.algorithm.os_handler.upload_file')
    @patch('src.algorithm.strategy.strategy.get_or_create_folder_id')
    def test_compare_snap_client_server_new_file(self, mock_1, mock_2, mock_3):
        test_node = _get_test_node()
        self.context.check(test_node, test_node, ClientStrategy())
        mock_1.assert_called_once()
        mock_2.assert_called_once()
        mock_3.assert_called_once()
 def test_double_clicked_action_exists_local(self):
     test_dir = LocalDirectory(default_code._get_test_node())
     test_dir_widget = LocalDirectoryWidget(test_dir)
     test_dir_widget.double_clicked_action()
 def test_compute_decision_new_server_folder(self, mock_1, mock_2, mock_3):
     test_node = _get_test_node()
     self.decision_engine.compute_decision(test_node, test_node, True)
     mock_1.assert_called_once()
     mock_2.assert_called_once()
     mock_3.assert_called_once()
 def test_compute_decision_new_server_update_file(self, mock_1, mock_2):
     test_node = _get_test_node()
     self.decision_engine.compute_decision(test_node, test_node, True)
     mock_1.assert_called_once()
     mock_2.assert_called_once()
 def test_compute_decision_new_client_folder_snap_false(
         self, mock_1, mock_2):
     test_node = _get_test_node()
     self.decision_engine.compute_decision(test_node, test_node, False)
     mock_1.assert_called_once()
     mock_2.assert_called_once()
 def test_compute_decision_new_client_file_snap_True(self, mock_1, mock_2):
     test_node = _get_test_node()
     self.decision_engine.compute_decision(test_node, test_node, True)
     mock_1.assert_called_once()
     mock_2.assert_called_once()
 def test_compare_snap_client_server_new_folder(self, mock_get_tree, mock_create_folder, mock_3):
     test_node = _get_test_node()
     self.context.check(test_node, test_node, ClientStrategy())
     self.assertEqual(mock_get_tree.call_count, 3)
     self.assertEqual(mock_create_folder.call_count, 3)
     mock_3.assert_called_once()
Esempio n. 15
0
class StrategyTest(default_code.DefaultCode):
    def setUp(self) -> None:
        super(StrategyTest, self).setUp()
        self.client_strategy = ClientStrategy()
        self.manual_strategy = ManualStrategy()
        # setup per manual strategy
        os_handler.set_network_model(MainModel().network_model)
        self.env_set = super().get_env_settings()

        # create files
        self.original_path = self.env_settings.value(super().SYNC_ENV_VARIABLE)
        self.folder_name = "test"
        self.file_name = "test.txt"

        self.path = os.path.join(self.original_path, "tree")
        self.path = r'%s' % self.path
        pathlib.Path(self.path).mkdir(parents=True, exist_ok=True)
        self.first_folder = os.path.join(self.path, self.folder_name)
        pathlib.Path(self.first_folder).mkdir(parents=True, exist_ok=True)

        with open(os.path.join(self.first_folder, self.file_name), "w"):
            pass

    def delete_files(self):
        file_to_remove = os.path.join(self.first_folder, self.file_name)

        try:
            if os.path.exists(file_to_remove):
                os.remove(file_to_remove)
        except Exception as e:
            print(e)
        try:
            if os.path.exists(self.first_folder):
                os.rmdir(self.first_folder)
        except Exception as e:
            print(e)
        try:
            if os.path.exists(self.path):
                os.rmdir(self.path)
        except Exception as e:
            print(e)

    def tearDown(self) -> None:
        self.delete_files()
        super(StrategyTest, self).tearDown()

    @patch('src.algorithm.strategy.client_strategy.get_or_create_folder_id',
           return_value=None)
    @patch('src.algorithm.os_handler.upload_file')
    def test_execute_client_strategy_server_update_file(self, mock_1, mock_2):
        obj_to_iterate: list = [
            default_code.ResultObj(Actions.SERVER_UPDATE_FILE).result
        ]
        logger = default_code.FakeLogger()
        self.client_strategy.execute(obj_to_iterate, logger)
        mock_1.assert_called_once()
        mock_2.assert_called_once()

    @patch('src.algorithm.strategy.client_strategy.common_strategy')
    def test_execute_client_strategy_common(self, mock_1):
        obj_to_iterate: list = [
            default_code.ResultObj(Actions.CLIENT_UPDATE_FILE).result,
            default_code.ResultObj(Actions.CLIENT_NEW_FOLDER).result,
            default_code.ResultObj(Actions.CLIENT_NEW_FILE).result,
            default_code.ResultObj(Actions.SERVER_NEW_FOLDER).result,
            default_code.ResultObj(Actions.SERVER_NEW_FILE).result
        ]
        logger = default_code.FakeLogger()
        self.client_strategy.execute(obj_to_iterate, logger)
        self.assertEqual(mock_1.call_count, 5)

    @patch('src.model.network_model.NetworkModel.get_content_from_node',
           return_value=default_code._get_special_tree_dict())
    @patch('src.algorithm.strategy.manual_strategy.get_or_create_folder_id',
           return_value=None)
    @patch('src.algorithm.os_handler.upload_file')
    @patch('os.rename')
    @patch('src.algorithm.tree_builder._build_tree_node',
           return_value=default_code._get_test_node())
    @patch('src.algorithm.strategy.manual_strategy.check_node_still_exists',
           return_value=True)
    def test_execute_manual_strategy_server_update_file_diff_snap(
            self, mock_1, mock_2, mock_3, mock_4, mock_5, mock_6):
        obj_to_iterate: list = [
            default_code.ResultObj(Actions.SERVER_UPDATE_FILE, 0,
                                   "name.ciao.we").result
        ]
        logger = default_code.FakeLogger()
        self.manual_strategy.execute(obj_to_iterate, logger)
        mock_1.assert_called_once()
        mock_2.assert_called_once()
        mock_3.assert_called_once()
        mock_4.assert_called_once()
        mock_5.assert_called_once()
        mock_6.assert_called_once()

    @patch('src.algorithm.strategy.manual_strategy.get_or_create_folder_id',
           return_value=None)
    @patch('src.algorithm.os_handler.upload_file')
    @patch('src.algorithm.strategy.manual_strategy.check_node_still_exists',
           return_value=None)
    def test_execute_manual_strategy_server_update_file_none(
            self, mock_1, mock_2, mock_3):
        obj_to_iterate: list = [
            default_code.ResultObj(Actions.SERVER_UPDATE_FILE, 0,
                                   "name.ciao.we").result
        ]
        logger = default_code.FakeLogger()
        self.manual_strategy.execute(obj_to_iterate, logger)
        mock_1.assert_called_once()
        mock_2.assert_called_once()
        mock_3.assert_called_once()

    @patch('src.model.network_model.NetworkModel.get_content_from_node',
           return_value=default_code._get_special_tree_dict())
    @patch('src.algorithm.strategy.manual_strategy.get_or_create_folder_id',
           return_value=None)
    @patch('src.algorithm.os_handler.upload_file')
    @patch('src.algorithm.tree_builder._create_node_from_dict',
           return_value=default_code._get_test_node())
    @patch('src.algorithm.strategy.manual_strategy.check_node_still_exists',
           return_value=True)
    def test_execute_manual_strategy_server_update_file_equal_snap(
            self, mock_1, mock_2, mock_3, mock_4, mock_5):
        obj_to_iterate: list = [
            default_code.ResultObj(Actions.SERVER_UPDATE_FILE, 0,
                                   "name.ciao.we", 200).result
        ]
        logger = default_code.FakeLogger()
        self.manual_strategy.execute(obj_to_iterate, logger)
        mock_1.assert_called_once()
        mock_2.assert_called_once()
        mock_3.assert_called_once()
        mock_4.assert_called_once()
        mock_5.assert_called_once()

    @patch('src.algorithm.strategy.manual_strategy.common_strategy')
    def test_execute_manual_strategy_common(self, mock_1):
        logger = default_code.FakeLogger()
        obj_to_iterate: list = [
            default_code.ResultObj(Actions.CLIENT_UPDATE_FILE).result,
            default_code.ResultObj(Actions.CLIENT_NEW_FOLDER).result,
            default_code.ResultObj(Actions.CLIENT_NEW_FILE).result,
            default_code.ResultObj(Actions.SERVER_NEW_FOLDER).result,
            default_code.ResultObj(Actions.SERVER_NEW_FILE).result
        ]
        self.manual_strategy.execute(obj_to_iterate, logger)
        self.assertEqual(mock_1.call_count, 5)

    @patch('src.algorithm.os_handler.create_folder')
    @patch('src.algorithm.tree_builder.get_tree_from_node_id',
           return_value=default_code.create_folder_with_folders(
               ["tree", "tree"]))
    def test_get_or_create_id_found(self, get_tree_mock, create_folder_mock):
        client_result = strategy.get_or_create_folder_id(self.first_folder)
        self.assertEqual(get_tree_mock.call_count, 2)
        manual_result = strategy.get_or_create_folder_id(self.first_folder)
        self.assertEqual(get_tree_mock.call_count, 4)
        self.assertEqual(client_result, manual_result)

    @patch('src.algorithm.os_handler.create_folder')
    @patch('src.algorithm.tree_builder.get_tree_from_node_id',
           return_value=default_code.create_folder_with_folders(["x", "x"]))
    def test_get_or_create_id_not_found(self, get_tree_mock,
                                        create_folder_mock):
        client_result = strategy.get_or_create_folder_id(self.first_folder)
        self.assertEqual(create_folder_mock.call_count, 2)
        self.assertEqual(get_tree_mock.call_count, 3)
        manual_result = strategy.get_or_create_folder_id(self.first_folder)
        self.assertEqual(create_folder_mock.call_count, 4)
        self.assertEqual(get_tree_mock.call_count, 6)
        self.assertEqual(client_result, manual_result)

    @patch('src.algorithm.strategy.strategy.check_node_still_exists',
           return_value="a")
    @patch('src.algorithm.os_handler.delete_node', return_value=True)
    def test_common_strategy_client_new_folder(self, m1, m2):
        node_raw = {
            "action":
            Actions.CLIENT_NEW_FOLDER,
            "node":
            TreeNode(Node("a", "ciao.txt", Type.File, 100, 200, "a/ciao.txt"))
        }
        logger = default_code.FakeLogger()
        strategy.common_strategy(node_raw, logger)
        m1.assert_called_once()
        m2.assert_called_once()

    @patch('src.algorithm.strategy.strategy.check_node_still_exists',
           return_value="a")
    @patch('src.algorithm.os_handler.delete_node', return_value=True)
    def test_common_strategy_client_new_file(self, m1, m2):
        node_raw = {
            "action":
            Actions.CLIENT_NEW_FILE,
            "node":
            TreeNode(Node("a", "ciao.txt", Type.File, 100, 200, "a/ciao.txt"))
        }
        logger = default_code.FakeLogger()
        strategy.common_strategy(node_raw, logger)
        m1.assert_called_once()
        m2.assert_called_once()

    @patch('src.algorithm.strategy.strategy.check_node_still_exists',
           return_value=None)
    @patch('src.algorithm.os_handler.delete_node', return_value=True)
    def test_common_strategy_client_new_folder_id_not_exists(self, m1, m2):
        node_raw = {
            "action":
            Actions.CLIENT_NEW_FOLDER,
            "node":
            TreeNode(Node("a", "ciao.txt", Type.File, 100, 200, "a/ciao.txt"))
        }
        logger = default_code.FakeLogger()
        strategy.common_strategy(node_raw, logger)
        m1.assert_not_called()
        m2.assert_called_once()

    @patch('src.algorithm.strategy.strategy.check_node_still_exists',
           return_value=None)
    @patch('src.algorithm.os_handler.delete_node', return_value=True)
    def test_common_strategy_client_new_file_id_not_exists(self, m1, m2):
        node_raw = {
            "action":
            Actions.CLIENT_NEW_FILE,
            "node":
            TreeNode(Node("a", "ciao.txt", Type.File, 100, 200, "a/ciao.txt"))
        }
        logger = default_code.FakeLogger()
        strategy.common_strategy(node_raw, logger)
        m1.assert_not_called()
        m2.assert_called_once()

    @patch('src.algorithm.tree_builder.get_tree_from_node_id',
           return_value=default_code.create_folder_with_folders(
               ["tree", "tree"]))
    def test_check_node_still_exists(self, m1):
        result = strategy.check_node_still_exists(os.path.join("test", "tree"))
        m1.assert_called_once()
        self.assertEqual(result, "CLIENT_NODE")

    @patch('src.algorithm.tree_builder.get_tree_from_node_id',
           return_value=default_code.create_folder_with_folders(
               ["tree", "tree"]))
    def test_check_node_still_exists_not_found(self, m1):
        result = strategy.check_node_still_exists(os.path.join(
            "test", "tree2"))
        m1.assert_called_once()
        self.assertIsNone(result)
Esempio n. 16
0
 def test_on_double_click_exists(self):
     test_file = File(default_code._get_test_node())
     test_widget = FileWidget(test_file)
     test_widget.Sl_on_double_click()
Esempio n. 17
0
 def test_upload_node(self, mock_upload):
     self.model_test.upload_node(default_code._get_test_node(), "test")
     mock_upload.assert_called_once()
 def test_compare_snap_client_equal_manual_strategy(self, mocked_fun):
     test_node = _get_test_node()
     self.context.check(test_node, test_node, ManualStrategy())
     mocked_fun.assert_called_once()
 def test_compare_snap_client_server_new_file(self, mock_1, mock_2, mock_3):
     test_node = _get_test_node()
     self.context.check(test_node, test_node, ClientStrategy())
     mock_1.assert_called_once()
     mock_2.assert_called_once()
     mock_3.assert_called_once()
Esempio n. 20
0
class OsHandlerTest(default_code.DefaultCode):

    def setUp(self) -> None:
        super().setUp()
        self.env_settings = super().get_env_settings()
        self.main_model = MainModel()
        os_handler.set_network_model(self.main_model.network_model)
        os_handler.set_settings_model(self.main_model.settings_model)

        self.original_path = self.env_settings.value(super().SYNC_ENV_VARIABLE)
        self.folder_name = "test"
        self.file_name = "test.txt"

        self.path = os.path.join(self.original_path, "tree")
        self.path = r'%s' % self.path
        pathlib.Path(self.path).mkdir(parents=True, exist_ok=True)

    def delete_files(self):
        folder_to_remove = os.path.join(self.path, self.folder_name)
        file_to_remove = os.path.join(folder_to_remove, self.file_name)
        optional_folder = os.path.join(folder_to_remove, self.folder_name)

        try:
            if os.path.exists(file_to_remove):
                os.remove(file_to_remove)
        except Exception as e:
            print(e)
        try:
            if os.path.exists(optional_folder):
                os.rmdir(optional_folder)
        except Exception as e:
            print(e)
        try:
            if os.path.exists(folder_to_remove):
                os.rmdir(folder_to_remove)
        except Exception as e:
            print(e)
        try:
            if os.path.exists(self.path):
                os.rmdir(self.path)
        except Exception as e:
            print(e)

    def tearDown(self) -> None:
        self.delete_files()
        super().tearDown()

    def test_set_model(self):
        os_handler.set_network_model(None)
        self.assertIsNone(os_handler.network_model)
        os_handler.set_network_model(self.main_model.network_model)
        self.assertEqual(os_handler.network_model, self.main_model.network_model)

    @patch('src.model.network_model.NetworkModel.download_node', return_value=True)
    @patch('src.model.settings_model.SettingsModel.is_id_in_sync_list', return_value=True)
    @patch('src.algorithm.os_handler.check_node_in_nodelist', return_value=True)
    def test_download_folder_with_file(self, mock_1, mock_2, mock_3):
        updated = 200
        created = 100
        test_node = TreeNode(Node("CLIENT_NODE", self.folder_name,
                                  Type.Folder, created, updated, self.path))
        test_node.add_node(TreeNode(Node("CLIENT_NODE", self.file_name,
                                         Type.File, created, updated, self.path)))
        x = os_handler.download_folder(test_node, self.path)
        self.assertEqual(x, [True])
        mock_1.assert_called_once()
        mock_2.assert_called_once()
        mock_3.assert_called_once()

    def test_download_folder_with_folder(self):
        created = 100
        updated = 200
        test_node = TreeNode(Node("CLIENT_NODE", self.folder_name,
                                  Type.Folder, created, updated, self.path))
        test_node.add_node(TreeNode(Node("CLIENT_NODE", self.folder_name,
                                         Type.Folder, created, updated, self.path)))
        x = os_handler.download_folder(test_node, self.path)
        self.assertEqual(x, [])
        folder_path = os.path.join(self.path, self.folder_name)
        inner_folder_path = os.path.join(folder_path, self.folder_name)
        self.assertEqual(os.path.exists(folder_path), False)
        self.assertEqual(os.path.exists(inner_folder_path), False)

    @patch('src.model.network_model.NetworkModel.upload_node', return_value=None)
    @patch('src.model.network_model.NetworkModel.create_folder', return_value=None)
    def test_upload_folder_with_file(self, mocked_create, mocked_upload):
        updated = 200
        created = 100
        test_node = TreeNode(Node("CLIENT_NODE", self.folder_name,
                                  Type.Folder, created, updated, self.path))
        test_node.add_node(TreeNode(Node("CLIENT_NODE", self.file_name,
                                         Type.File, created, updated, self.path)))
        os_handler.upload_folder(test_node, self.path)
        mocked_upload.assert_called_once()
        mocked_create.assert_called_once()

    @patch('src.model.network_model.NetworkModel.create_folder', return_value=None)
    def test_upload_folder_with_folder(self, mocked_fun):
        updated = 200
        created = 100
        test_node = TreeNode(Node("CLIENT_NODE", self.folder_name,
                                  Type.Folder, created, updated, self.path))
        test_node.add_node(TreeNode(Node("CLIENT_NODE", self.file_name,
                                         Type.Folder, created, updated, self.path)))
        os_handler.upload_folder(test_node, self.path)
        self.assertEqual(mocked_fun.call_count, 2)

    @patch('src.model.settings_model.SettingsModel.is_id_in_sync_list', return_value=False)
    def test_download_file_not_in_list(self, mocked_fun):
        test_node = TreeNode(Node("CLIENT_NODE", self.folder_name,
                                  Type.File, 100, 200, "ciao.txt"))
        res = os_handler.download_file(test_node, self.path)
        mocked_fun.assert_called_once()
        self.assertIsNone(res)

    @patch('src.model.settings_model.SettingsModel.get_sync_list', return_value=["a", "b"])
    @patch('src.model.network_model.NetworkModel.delete_node')
    def test_delete_node_file_present(self, m1, m2):
        res = os_handler.delete_node("a", True)
        m1.assert_called_once()
        m2.assert_called_once()
        self.assertTrue(res)

    @patch('src.model.settings_model.SettingsModel.get_sync_list', return_value=["a", "b"])
    def test_delete_node_file_not_present(self, m1):
        res = os_handler.delete_node("c", True)
        m1.assert_called_once()
        self.assertFalse(res)

    @patch('src.model.settings_model.SettingsModel.get_sync_list', return_value=["a", "b"])
    @patch('src.algorithm.tree_builder.get_tree_from_node_id', return_value=_get_test_node())
    @patch('src.algorithm.os_handler.check_node_in_nodelist', return_value=True)
    @patch('src.model.network_model.NetworkModel.delete_node')
    def test_delete_node_folder_present(self, m1, m2, m3, m4):
        res = os_handler.delete_node("a", False)
        m1.assert_called_once()
        m2.assert_called_once()
        m3.assert_called_once()
        m4.assert_called_once()
        self.assertTrue(res)

    def test_check_node_in_nodelist(self):
        updated = 200
        created = 100
        test_node = TreeNode(Node("ROOT", self.folder_name,
                                  Type.Folder, created, updated, self.path))
        test_node.add_node(TreeNode(Node("b", self.file_name,
                                         Type.File, created, updated, self.path)))

        sub_folder = TreeNode(Node("a", self.folder_name,
                                   Type.Folder, created, updated, self.path))

        sub_folder.add_node(TreeNode(Node("f", self.folder_name,
                                          Type.File, created, updated, self.path)))
        test_node.add_node(sub_folder)

        res = os_handler.check_node_in_nodelist(test_node, ["a", "b"])
        self.assertTrue(res)

        res = os_handler.check_node_in_nodelist(test_node, ["d", "e"])
        self.assertFalse(res)

        res = os_handler.check_node_in_nodelist(test_node, ["f"])
        self.assertTrue(res)