def test_bad_end_date(self): # Setup self.repo_config[constants.END_DATE_KEYWORD] = 'malformed date' # Test result = export_utils.validate_export_config(PluginCallConfiguration({}, self.repo_config)) self.assertFalse(result[0])
def test_bad_skip_config(self): # Setup self.repo_config[constants.SKIP_KEYWORD] = 'not a list' # Test that a skip list that isn't a list fails to validate result = export_utils.validate_export_config(PluginCallConfiguration({}, self.repo_config)) self.assertFalse(result[0])
def test_bad_iso_size_config(self): # Setup self.repo_config[constants.ISO_SIZE_KEYWORD] = -55 # Test that a prefix with invalid characters fails validation result = export_utils.validate_export_config(PluginCallConfiguration({}, self.repo_config)) self.assertFalse(result[0])
def test_missing_export_dir(self, mock_isdir): # Setup self.repo_config[constants.EXPORT_DIRECTORY_KEYWORD] = '/directory/not/found' mock_isdir.return_value = False # Test that if the export directory isn't found, validation fails result = export_utils.validate_export_config(PluginCallConfiguration({}, self.repo_config)) self.assertFalse(result[0])
def test_unwritable_export_dir(self, mock_isdir, mock_access): # Setup self.repo_config[constants.EXPORT_DIRECTORY_KEYWORD] = '/some/dir' mock_isdir.return_value = True mock_access.return_value = False # Test that if the export directory isn't writable, validation fails result = export_utils.validate_export_config(PluginCallConfiguration({}, self.repo_config)) self.assertFalse(result[0])
def test_full_config(self, mock_access, mock_isdir): self.repo_config[constants.SKIP_KEYWORD] = [] self.repo_config[constants.ISO_PREFIX_KEYWORD] = 'prefix' self.repo_config[constants.ISO_SIZE_KEYWORD] = 630 self.repo_config[constants.EXPORT_DIRECTORY_KEYWORD] = export_dir = '/path/to/dir' self.repo_config[constants.START_DATE_KEYWORD] = '2013-07-18T11:22:00' self.repo_config[constants.END_DATE_KEYWORD] = '2013-07-18T11:23:00' result, msg = export_utils.validate_export_config(PluginCallConfiguration({}, self.repo_config)) self.assertTrue(result) mock_isdir.assert_called_once_with(export_dir) self.assertEqual(2, mock_access.call_count) self.assertEqual((export_dir, os.R_OK), mock_access.call_args_list[0][0]) self.assertEqual((export_dir, os.W_OK), mock_access.call_args_list[1][0])
def test_invalid_key(self): self.repo_config['leek'] = 'garlic' result, msg = export_utils.validate_export_config(PluginCallConfiguration({}, self.repo_config)) self.assertFalse(result)
def test_non_bool_https_key(self): # Confirm including a non-boolean for the publish https keyword fails validation self.repo_config[constants.PUBLISH_HTTPS_KEYWORD] = 'potato' result, msg = export_utils.validate_export_config(PluginCallConfiguration({}, self.repo_config)) self.assertFalse(result)
def test_required_keys_only(self): # Confirm providing only required keys causes a successful validation return_value = export_utils.validate_export_config(self.valid_config) self.assertEqual(return_value, (True, None))
def test_missing_required_key(self): # Confirm missing required keys causes validation to fail result, msg = export_utils.validate_export_config(PluginCallConfiguration({}, {})) self.assertFalse(result)