def test_is_ready_returns_false_when_firmware_api_returns_true(
            self, mock_sys, mock_glob, mock_firmware_manager_factory,
            mock_FirmwareUpdate):
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        self.mock_firmware_updater.check_ready.return_value = True

        fwapi = FirmwareAPI()
        self.assertTrue(fwapi.is_ready())
    def test_is_firmware_valid_raises_exception_if_multipule_firmware_files_present(self, mock_sys, mock_glob, mock_firmware_manager_factory, mock_FirmwareUpdate):
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        mock_glob.return_value = ['peachyprinter-firmware-1.0.0.bin', 'peachyprinter-firmware-1.0.1.bin']
        with self.assertRaises(Exception) as context:
            fwapi = FirmwareAPI()
            fwapi.is_firmware_valid('1.0.0')

        self.assertEquals("Unexpected firmware files", context.exception.message)
    def test_make_ready_should_create_a_communicator_and_send_the_correct_message(self, mock_sys, mock_glob, mock_firmware_manager_factory, mock_FirmwareUpdate):
        mock_firmware_update = mock_FirmwareUpdate.return_value
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)

        fwapi = FirmwareAPI()
        fwapi.make_ready()

        mock_firmware_update.prepare.assert_called_with()
        mock_FirmwareUpdate.assert_called_with(self.expected_firmware_file, self.mock_firmware_updater)
    def test_is_firmware_valid_raises_exception_if_no_firmware_file_present(self, mock_sys, mock_glob, mock_firmware_manager_factory, mock_FirmwareUpdate):
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        mock_glob.return_value = []

        with self.assertRaises(Exception) as context:
            fwapi = FirmwareAPI()
            fwapi.is_firmware_valid('1.0.0')

        self.assertEquals("Package missing required firmware", context.exception.message)
    def test_is_firmware_valid_returns_true_if_file_matches_version(self, mock_sys, mock_glob, mock_firmware_manager_factory, mock_FirmwareUpdate):
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        mock_glob.return_value = ['peachyprinter-firmware-1.0.0.bin']
        expected_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..', 'src', 'peachyprinter', 'dependancies', 'firmware'))
        fwapi = FirmwareAPI()

        result = fwapi.is_firmware_valid('1.0.0')

        mock_glob.assert_called_with(os.path.join(expected_path, "peachyprinter-firmware-*.bin"))
        self.assertTrue(result)
    def test_firmware_update_should_create_and_run_firmware_update(self, mock_sys, mock_glob, mock_firmware_manager_factory, mock_FirmwareUpdate):
        mock_firmware_update = mock_FirmwareUpdate.return_value
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        expected_call_back = "Boop"

        fwapi = FirmwareAPI()
        fwapi.update_firmware(expected_call_back)

        mock_FirmwareUpdate.assert_called_with(self.expected_firmware_file, self.mock_firmware_updater)
        mock_firmware_update.start.assert_called_with(expected_call_back)
    def test_firmware_update_should_raise_exception_if_not_ready(self, mock_sys, mock_glob, mock_firmware_manager_factory, mock_FirmwareUpdate):
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        self.mock_firmware_updater.check_ready.return_value = False

        fwapi = FirmwareAPI()

        with self.assertRaises(Exception) as context:
            fwapi.update_firmware()

        self.assertEquals("Peachy Printer not ready for update", context.exception.message)
    def test_is_firmware_valid_raises_exception_if_no_firmware_file_present(
            self, mock_sys, mock_glob, mock_firmware_manager_factory,
            mock_FirmwareUpdate):
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        mock_glob.return_value = []

        with self.assertRaises(Exception) as context:
            fwapi = FirmwareAPI()
            fwapi.is_firmware_valid('1.0.0')

        self.assertEquals("Package missing required firmware",
                          context.exception.message)
    def test_make_ready_should_create_a_communicator_and_send_the_correct_message(
            self, mock_sys, mock_glob, mock_firmware_manager_factory,
            mock_FirmwareUpdate):
        mock_firmware_update = mock_FirmwareUpdate.return_value
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)

        fwapi = FirmwareAPI()
        fwapi.make_ready()

        mock_firmware_update.prepare.assert_called_with()
        mock_FirmwareUpdate.assert_called_with(self.expected_firmware_file,
                                               self.mock_firmware_updater)
    def test_firmware_update_should_create_and_run_firmware_update(
            self, mock_sys, mock_glob, mock_firmware_manager_factory,
            mock_FirmwareUpdate):
        mock_firmware_update = mock_FirmwareUpdate.return_value
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        expected_call_back = "Boop"

        fwapi = FirmwareAPI()
        fwapi.update_firmware(expected_call_back)

        mock_FirmwareUpdate.assert_called_with(self.expected_firmware_file,
                                               self.mock_firmware_updater)
        mock_firmware_update.start.assert_called_with(expected_call_back)
    def test_firmware_update_should_raise_exception_if_not_ready(
            self, mock_sys, mock_glob, mock_firmware_manager_factory,
            mock_FirmwareUpdate):
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        self.mock_firmware_updater.check_ready.return_value = False

        fwapi = FirmwareAPI()

        with self.assertRaises(Exception) as context:
            fwapi.update_firmware()

        self.assertEquals("Peachy Printer not ready for update",
                          context.exception.message)
    def test_is_firmware_valid_raises_exception_if_multipule_firmware_files_present(
            self, mock_sys, mock_glob, mock_firmware_manager_factory,
            mock_FirmwareUpdate):
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        mock_glob.return_value = [
            'peachyprinter-firmware-1.0.0.bin',
            'peachyprinter-firmware-1.0.1.bin'
        ]
        with self.assertRaises(Exception) as context:
            fwapi = FirmwareAPI()
            fwapi.is_firmware_valid('1.0.0')

        self.assertEquals("Unexpected firmware files",
                          context.exception.message)
    def test_is_firmware_valid_returns_true_if_file_matches_version(
            self, mock_sys, mock_glob, mock_firmware_manager_factory,
            mock_FirmwareUpdate):
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        mock_glob.return_value = ['peachyprinter-firmware-1.0.0.bin']
        expected_path = os.path.abspath(
            os.path.join(os.path.dirname(__file__), '..', '..', '..', 'src',
                         'peachyprinter', 'dependancies', 'firmware'))
        fwapi = FirmwareAPI()

        result = fwapi.is_firmware_valid('1.0.0')

        mock_glob.assert_called_with(
            os.path.join(expected_path, "peachyprinter-firmware-*.bin"))
        self.assertTrue(result)
    def test_required_version_gets_version_from_bin(
            self, mock_sys, mock_glob, mock_firmware_manager_factory,
            mock_FirmwareUpdate):
        expected_verison = "1.8.2"
        self._setup_mock(mock_sys,
                         mock_firmware_manager_factory,
                         mock_glob,
                         firmware_version=expected_verison)
        fwapi = FirmwareAPI()

        self.assertEquals(expected_verison, fwapi.required_version)
    def test_is_ready_returns_false_when_firmware_api_returns_false(self, mock_sys, mock_glob, mock_firmware_manager_factory, mock_FirmwareUpdate):
        self._setup_mock(mock_sys, mock_firmware_manager_factory, mock_glob)
        self.mock_firmware_updater.check_ready.return_value = False

        fwapi = FirmwareAPI()
        self.assertFalse(fwapi.is_ready())
 def get_firmware_api(self):
     if not self._firmware_api:
         self._firmware_api = FirmwareAPI()
     return self._firmware_api