示例#1
0
class HardDriveSourceTestCase(unittest.TestCase):
    def setUp(self):
        self.module = HardDriveSourceModule()

    def type_test(self):
        """Hard drive source module has a correct type."""
        self.assertEqual(SourceType.HDD, self.module.type)

    def set_up_with_tasks_test(self):
        """Hard drive source set up task type and amount."""
        task_classes = [SetUpHardDriveSourceTask]

        # task will not be public so it won't be published
        tasks = self.module.set_up_with_tasks()

        # Check the number of the tasks
        task_number = len(task_classes)
        self.assertEqual(task_number, len(tasks))

        for i in range(task_number):
            self.assertIsInstance(tasks[i], task_classes[i])

    @patch("os.path.ismount")
    def ready_state_test(self, ismount):
        """Hard drive source ready state for set up."""
        ismount.return_value = False

        self.assertEqual(self.module.get_state(), SourceState.UNREADY)
        ismount.assert_called_once_with(self.module._device_mount)

        ismount.reset_mock()
        ismount.return_value = True

        task = self.module.set_up_with_tasks()[0]
        task.get_result = Mock(return_value=("/my/path", False))
        task.succeeded_signal.emit()

        self.assertEqual(self.module.get_state(), SourceState.READY)
        ismount.assert_called_once_with(self.module._device_mount)

    def return_handler_test(self):
        """Hard drive source setup result propagates back."""
        task = _create_setup_task()
        # Test only the returning. To do that, fake what the magic in start() does.
        # Do not run() the task at all, less mocking needed that way.
        task._set_result((iso_mount_location, True))
        self.module._handle_setup_task_result(task)

        self.assertEqual(iso_mount_location, self.module.install_tree_path)
        self.assertEqual(True, self.module._uses_iso_mount)
示例#2
0
class HardDriveSourceTestCase(unittest.TestCase):
    def setUp(self):
        self.module = HardDriveSourceModule()

    def test_type(self):
        """Hard drive source module has a correct type."""
        assert SourceType.HDD == self.module.type

    def test_network_required(self):
        """Test the property network_required."""
        assert self.module.network_required is False

    def test_set_up_with_tasks(self):
        """Hard drive source set up task type and amount."""
        task_classes = [SetUpHardDriveSourceTask]

        # task will not be public so it won't be published
        tasks = self.module.set_up_with_tasks()

        # Check the number of the tasks
        task_number = len(task_classes)
        assert task_number == len(tasks)

        for i in range(task_number):
            assert isinstance(tasks[i], task_classes[i])

    @patch("os.path.ismount")
    def test_ready_state(self, ismount):
        """Hard drive source ready state for set up."""
        ismount.return_value = False

        assert self.module.get_state() == SourceState.UNREADY
        ismount.assert_called_once_with(self.module._device_mount)

        ismount.reset_mock()
        ismount.return_value = True

        task = self.module.set_up_with_tasks()[0]
        task.get_result = Mock(
            return_value=SetupHardDriveResult("/my/path", ""))
        task.succeeded_signal.emit()

        assert self.module.get_state() == SourceState.READY
        ismount.assert_called_once_with(self.module._device_mount)

    def test_return_handler(self):
        """Hard drive source setup result propagates back."""
        task = self.module.set_up_with_tasks()[0]
        task.get_result = Mock(return_value=SetupHardDriveResult(
            iso_mount_location, "iso_name.iso"))
        task.succeeded_signal.emit()

        assert self.module.install_tree_path == iso_mount_location
        assert self.module._iso_name == "iso_name.iso"

    def test_return_handler_without_iso(self):
        """Hard drive source setup result propagates back when no ISO is involved.

        This is happening when installation tree is used instead of ISO image.
        """
        task = self.module.set_up_with_tasks()[0]
        task.get_result = Mock(
            return_value=SetupHardDriveResult(iso_mount_location, ""))
        task.succeeded_signal.emit()

        assert self.module.install_tree_path == iso_mount_location
        assert self.module._iso_name == ""

    def test_repr(self):
        self.module.set_device("device")
        self.module.set_directory("directory")
        self.module._install_tree_path = "install-tree-path"
        assert repr(self.module) == \
            "Source(type='HDD', partition='device', directory='directory')"