def test_fetch_modules_failures(self, mock_download): tmp_dir = '/tmp/puppet-testing' feed_url = 'http://host/root/' mock_repo = Mock() conduit = Mock() config = {constants.CONFIG_FEED: feed_url} manifest = [('path1', 'AA', 10), ('path2', 'BB', 20)] report_1 = Mock() report_1.destination = os.path.join(tmp_dir, manifest[0][0]) report_2 = Mock() report_2.destination = os.path.join(tmp_dir, manifest[1][0]) report_2.error_msg = 'it just dont work' mock_download.return_value = [report_1], [report_2] # test method = SynchronizeWithDirectory(mock_repo, conduit, config) method.report = Mock() method.tmp_dir = '/tmp/puppet-testing' module_paths = method._fetch_modules(manifest) # validation url_1 = os.path.join(feed_url, manifest[0][0]) url_2 = os.path.join(feed_url, manifest[1][0]) mock_download.assert_any_with([(url_1, report_1.destination)]) mock_download.assert_any_with([(url_2, report_2.destination)]) self.assertEqual(len(module_paths), 1) self.assertEqual(module_paths[0], report_1.destination) self.assertTrue(method.report.update_progress.called) self.assertEqual(method.report.modules_state, constants.STATE_FAILED) self.assertEqual(method.report.modules_error_count, 1) self.assertEqual(len(method.report.modules_individual_errors), 1) self.assertEqual(method.report.modules_individual_errors[0], report_2.error_msg)
def test_fetch_modules(self, mock_download): tmp_dir = '/tmp/puppet-testing' feed_url = 'http://host/root/' mock_repo = Mock() conduit = Mock() config = {constants.CONFIG_FEED: feed_url} manifest = [('path1', 'AA', 10), ('path2', 'BB', 20)] report_1 = Mock() report_1.destination = os.path.join(tmp_dir, manifest[0][0]) report_2 = Mock() report_2.destination = os.path.join(tmp_dir, manifest[1][0]) mock_download.return_value = [report_1, report_2], [] # test method = SynchronizeWithDirectory(mock_repo, conduit, config) method.report = Mock() method.tmp_dir = '/tmp/puppet-testing' module_paths = method._fetch_modules(manifest) # validation url_1 = os.path.join(feed_url, manifest[0][0]) url_2 = os.path.join(feed_url, manifest[1][0]) mock_download.assert_any_with([(url_1, report_1.destination)]) mock_download.assert_any_with([(url_2, report_2.destination)]) self.assertEqual(len(module_paths), 2) self.assertEqual(module_paths[0], report_1.destination) self.assertEqual(module_paths[1], report_2.destination) # Assert the progress report was updated and the report is still in the running state. # The _import_modules method must be called to complete the task. self.assertTrue(method.report.update_progress.called) self.assertEqual(method.report.modules_state, constants.STATE_RUNNING)