def initialize(self): try: web_config = self._get_web_config() for web_app in web_config['applications']: file_app = self._get_file_config(web_app['id']) if file_app: self._applications.append(Application.from_configs(web_app, file_app)) else: self._applications.append(Application.from_configs(web_app)) except ConfigException as cfgex: return (False, cfgex.error_code, cfgex.message) return (True, "0", "Success")
def initialize(self): try: web_config = self._get_web_config() for web_app in web_config['applications']: file_app = self._get_file_config(web_app['id']) if file_app: self._applications.append( Application.from_configs(web_app, file_app)) else: self._applications.append( Application.from_configs(web_app)) except ConfigException as cfgex: return (False, cfgex.error_code, cfgex.message) return (True, "0", "Success")
def test_actions_should_be_remove_and_upgrade_if_version_of_installed_not_equal_to_new_version(self): installed_config = self.get_sample_installed_config() web_config = self.get_sample_application_config() installed_config['current_version'] = '2.3.4' web_config['available_version'] = '2.4.4' app = Application.from_configs(web_config, installed_config) self.assertEquals(2, len(app.actions)) self.assertTrue('remove' in app.actions) self.assertTrue('upgrade' in app.actions)
def test_actions_should_be_remove_if_version_of_installed_equal_to_new_version(self): installed_config = self.get_sample_installed_config() web_config = self.get_sample_application_config() installed_config['current_version'] = '2.3.4' web_config['available_version'] = '2.3.4' app = Application.from_configs(web_config, installed_config) print app.actions self.assertEquals(1, len(app.actions)) self.assertEquals('remove', app.actions[0])
def test_actions_should_be_remove_and_upgrade_if_version_of_installed_not_equal_to_new_version( self): installed_config = self.get_sample_installed_config() web_config = self.get_sample_application_config() installed_config['current_version'] = '2.3.4' web_config['available_version'] = '2.4.4' app = Application.from_configs(web_config, installed_config) self.assertEquals(2, len(app.actions)) self.assertTrue('remove' in app.actions) self.assertTrue('upgrade' in app.actions)
def test_get_item_responds_with_specific_application(self, mock_urllib2, mock_exists): mock_exists.return_value = False mock_urllib2.urlopen.return_value = self.make_mock_response(code=200, data=self.get_sample_web_config()) expected_app = Application.from_configs(self.get_sample_application_config()) test_installer_api = InstallerAPI('config_url') result = test_installer_api.initialize() self.assertTrue(result[0]) app = test_installer_api.get_item(expected_app.id) self.assertEquals(expected_app, app)
def test_actions_should_be_remove_if_version_of_installed_equal_to_new_version( self): installed_config = self.get_sample_installed_config() web_config = self.get_sample_application_config() installed_config['current_version'] = '2.3.4' web_config['available_version'] = '2.3.4' app = Application.from_configs(web_config, installed_config) print app.actions self.assertEquals(1, len(app.actions)) self.assertEquals('remove', app.actions[0])
def test_get_items_should_return_a_list_of_available_items(self, mock_urllib2, mock_exists): mock_exists.return_value = False test_installer_api = InstallerAPI('config_url') sample = '{"version": 0, "applications":[%s]}' % json.dumps(self.get_sample_application_config()) expected_result = [Application.from_configs(self.get_sample_application_config())] mock_urllib2.urlopen.return_value = self.make_mock_response(code=200, data=sample) init_result = list(test_installer_api.initialize()) self.assertTrue(init_result[0], init_result[2]) result = test_installer_api.get_items() self.assertEqual(expected_result, result)
def test_process_should_create_and_start_an_upgrader_for_item_if_install_true(self, mock_AsyncActionHandler, mock_urllib2, mock_exists): mock_exists.return_value = False mock_urllib2.urlopen.return_value = self.make_mock_response(code=200, data=self.get_sample_web_config()) expected_app = Application.from_configs(self.get_sample_application_config()) test_installer_api = InstallerAPI('config_url') result = test_installer_api.initialize() self.assertTrue(result[0], result) test_installer_api.process(expected_app.id, 'base_folder', action='upgrade', status_callback='status_callback', complete_callback='complete_callback') mock_AsyncActionHandler.assert_called_with('upgrade', expected_app, 'base_folder', status_callback='status_callback', complete_callback='complete_callback') mock_AsyncActionHandler.return_value.start.assert_called_with()
def test_process_should_raise_if_nothing_selected(self, mock_AsyncActionHandler, mock_urllib2, mock_exists): mock_exists.return_value = False mock_urllib2.urlopen.return_value = self.make_mock_response(code=200, data=self.get_sample_web_config()) expected_app = Application.from_configs(self.get_sample_application_config()) test_installer_api = InstallerAPI('config_url') result = test_installer_api.initialize() self.assertTrue(result[0], result) with self.assertRaises(Exception): test_installer_api.process(expected_app.id, 'base_folder', action='wrong', status_callback='status_callback', complete_callback='complete_callback') mock_AsyncActionHandler.assert_not_called()
def test_has_correct_fields(self): installed_config = self.get_sample_installed_config() web_config = self.get_sample_application_config() app = Application.from_configs(web_config, installed_config) self.assertEquals(web_config['id'], app.id) self.assertEquals(web_config['name']['en-us'], app.name) self.assertEquals(installed_config['current_version'], app.current_version) self.assertEquals(web_config['available_version'], app.available_version) self.assertEquals(web_config['location'], app.download_location) self.assertEquals(web_config['install_path'], app.relitive_install_path) self.assertEquals(installed_config['installed_path'], app.installed_path) self.assertEquals(installed_config['shortcut_path'], app.shortcut_path) self.assertEquals(web_config['executable'], app.executable_path)
def test_initialize_should_create_correct_application(self, mock_urllib2, mock_exists): mock_exists.return_value = True mock_urllib2.urlopen.return_value = self.make_mock_response(code=200, data=self.get_sample_web_config()) mock_open_file = mock_open(read_data=json.dumps(self.get_sample_installed_config())) expected_app = Application.from_configs(self.get_sample_application_config(), self.get_sample_installed_config()) with patch('installer_api.open', mock_open_file, create=True): test_installer_api = InstallerAPI('config_url') result = test_installer_api.initialize() self.assertTrue(result[0]) apps = test_installer_api.get_items() self.assertEquals(1, len(apps)) self.assertEquals(expected_app, apps[0])
def test_two_identical_applications_are_equal(self): installed_config = self.get_sample_installed_config() web_config = self.get_sample_application_config() app1 = Application.from_configs(web_config, installed_config) app2 = Application.from_configs(web_config, installed_config) self.assertEquals(app1, app2)
def test_raises_exception_if_ids_do_not_match(self): file_config = self.get_sample_installed_config() file_config['id'] = 234 web_config = self.get_sample_installed_config() with self.assertRaises(Exception): Application.from_configs(web_config, file_config)
def test_actions_should_be_install_if_no_existing_version(self): web_config = self.get_sample_application_config() app = Application.from_configs(web_config) self.assertEquals(1, len(app.actions)) self.assertEquals('install', app.actions[0])
def test_uses_web_config_name_if_name_do_not_match(self): file_config = self.get_sample_installed_config() file_config['name'] = 'Bad Wolf' web_config = self.get_sample_application_config() app = Application.from_configs(web_config, file_config) self.assertEquals(web_config['name']['en-us'], app.name)
def get_application(self): return Application.from_configs(self.get_sample_application_config())