def is_file_valid_in_set(self, file_path, file_type, ignored_errors=None): """Check if the file is valid in the id_set Args: file_path (string): Path to the file. file_type (string): The file type. ignored_errors (list): a list of ignored errors for the specific file Returns: bool. Whether the file is valid in the id_set or not. """ self.ignored_errors = ignored_errors is_valid = True if self.is_circle: # No need to check on local env because the id_set will contain this info after the commit click.echo(f"id set validations for: {file_path}") if re.match(constants.PACKS_SCRIPT_YML_REGEX, file_path, re.IGNORECASE): unifier = Unifier(os.path.dirname(file_path)) yml_path, code = unifier.get_script_or_integration_package_data( ) script_data = get_script_data(yml_path, script_code=code) is_valid = self._is_non_real_command_found(script_data) elif file_type == constants.FileType.INCIDENT_TYPE: incident_type_data = OrderedDict( get_incident_type_data(file_path)) is_valid = self._is_incident_type_default_playbook_found( incident_type_data) elif file_type == constants.FileType.INTEGRATION: integration_data = get_integration_data(file_path) is_valid = self._is_integration_classifier_and_mapper_found( integration_data) elif file_type == constants.FileType.CLASSIFIER: classifier_data = get_classifier_data(file_path) is_valid = self._is_classifier_incident_types_found( classifier_data) elif file_type == constants.FileType.MAPPER: mapper_data = get_mapper_data(file_path) is_valid = self._is_mapper_incident_types_found(mapper_data) elif file_type == constants.FileType.PLAYBOOK: playbook_data = get_playbook_data(file_path) is_valid = self._are_playbook_entities_versions_valid( playbook_data, file_path) return is_valid
def test_get_classifiers_data_no_types_scripts(): """ Given - An classifier file called classifier-to-test-no-incidenttypes.json with incident type related to it When - parsing classifier files Then - parsing all the data from file successfully """ test_dir = f'{git_path()}/demisto_sdk/commands/create_id_set/tests/test_data/classifier-to-test-no-incidenttypes.json' result = get_classifier_data(test_dir) result = result.get('dummy classifier') assert 'name' in result.keys() assert 'file_path' in result.keys() assert 'fromversion' in result.keys() assert 'incident_types' not in result.keys() assert 'incident_fields' not in result.keys()
def test_get_classifiers_data(): """ Given - A classifier file called classifier-to-test.json When - parsing classifier files Then - parsing all the data from file successfully """ test_dir = f'{git_path()}/demisto_sdk/commands/create_id_set/tests/test_data/classifier-to-test.json' result = get_classifier_data(test_dir) result = result.get('dummy classifier') assert 'name' in result.keys() assert 'file_path' in result.keys() assert 'fromversion' in result.keys() assert 'incident_types' in result.keys() assert 'dummy incident type' in result['incident_types'] assert 'dummy incident type 2' in result['incident_types'] assert 'dummy incident type 3' in result['incident_types']
def test_process_classifiers__no_types_scripts(): """ Given - An classifier file called classifier-to-test-no-incidenttypes.json with incident type related to it When - parsing classifier files Then - parsing all the data from file successfully """ test_file = os.path.join(git_path(), 'demisto_sdk', 'commands', 'create_id_set', 'tests', 'test_data', 'classifier-to-test-no-incidenttypes.json') res = get_classifier_data(test_file) result = res.get('dummy classifier') assert 'name' in result.keys() assert 'file_path' in result.keys() assert 'fromversion' in result.keys() assert 'incident_types' not in result.keys() assert 'incident_fields' not in result.keys()