def validate_all_files(self): """Validate all files in the repo are in the right format.""" # go over packs for root, dirs, _ in os.walk(PACKS_DIR): for dir_in_dirs in dirs: for directory in PACKS_DIRECTORIES: for inner_root, inner_dirs, files in os.walk(os.path.join(root, dir_in_dirs, directory)): for inner_dir in inner_dirs: if inner_dir.startswith('.'): continue project_dir = os.path.join(inner_root, inner_dir) _, file_path = get_yml_paths_in_dir(os.path.normpath(project_dir), Errors.no_yml_file(project_dir)) if file_path: print("Validating {}".format(file_path)) structure_validator = StructureValidator(file_path) if not structure_validator.is_valid_scheme(): self._is_valid = False # go over regular content entities for directory in DIR_LIST_FOR_REGULAR_ENTETIES: print_color('Validating {} directory:'.format(directory), LOG_COLORS.GREEN) for root, dirs, files in os.walk(directory): for file_name in files: file_path = os.path.join(root, file_name) # skipping hidden files if not file_name.endswith('.yml'): continue print('Validating ' + file_name) structure_validator = StructureValidator(file_path) if not structure_validator.is_valid_scheme(): self._is_valid = False # go over regular PACKAGE_SUPPORTING_DIRECTORIES entities for directory in PACKAGE_SUPPORTING_DIRECTORIES: for root, dirs, files in os.walk(directory): for inner_dir in dirs: if inner_dir.startswith('.'): continue project_dir = os.path.join(root, inner_dir) _, file_path = get_yml_paths_in_dir(project_dir, Errors.no_yml_file(project_dir)) if file_path: print('Validating ' + file_path) structure_validator = StructureValidator(file_path) if not structure_validator.is_valid_scheme(): self._is_valid = False
def test_scheme_validation_playbook(self, path, scheme, answer, error, mocker): mocker.patch.object(StructureValidator, 'scheme_of_file_by_path', return_value=scheme) validator = StructureValidator(file_path=path) assert validator.is_valid_scheme() is answer, error
def test_validate_field_with_aliases__valid(self, pack: Pack): """ Given Incident field with a valid Aliases field. When Validating the item. Then Ensures the schema is valid. """ field_content = { 'cliName': 'mainfield', 'name': 'main field', 'id': 'incident', 'content': True, 'type': 'longText', 'Aliases': [{ "cliName": "aliasfield", "type": "shortText", "name": "Alias Field", }], } incident_field: JSONBased = pack.create_incident_field( 'incident-field-test', content=field_content, ) structure = StructureValidator(incident_field.path) assert structure.is_valid_scheme()
def test_validate_field_with_aliases__invalid_type(self, pack: Pack): """ Given - Incident field with a Aliases field that has an entry with an invalid type. When - Validating the item. Then - Ensures the schema is invalid. """ field_content = { 'cliName': 'mainfield', 'name': 'main field', 'id': 'incident', 'content': True, 'type': 'longText', 'Aliases': [{ "cliName": "alias field", "type": "UNKNOWN" }] } incident_field: JSONBased = pack.create_incident_field( 'incident-field-test', content=field_content ) structure = StructureValidator(incident_field.path) assert not structure.is_valid_scheme()
def test_release_notes_config_scheme(self, tmpdir, release_notes_config: dict, expected: bool): file_path: str = f'{tmpdir}/1_0_1.json' with open(file_path, 'w') as f: f.write(json.dumps(release_notes_config)) validator = StructureValidator(file_path=file_path, predefined_scheme='releasenotesconfig') assert validator.is_valid_scheme() is expected
def test_is_indicator_with_open_ended(self, pack: Pack): field_content = { 'cliName': 'sanityname', 'name': 'sanity name', 'id': 'incident', 'content': True, 'type': 'multiSelect', 'openEnded': True } incident_field: JSONBased = pack.create_indicator_field( 'incident-field-test', content=field_content) structure = StructureValidator(incident_field.path) assert structure.is_valid_scheme()
def test_scheme_validation_reputation(self, path, answer): validator = StructureValidator(file_path=path, predefined_scheme='reputation') assert validator.is_valid_scheme() is answer
def test_scheme_validation_indicatorfield(self, path, scheme, answer, mocker): validator = StructureValidator(file_path=path, predefined_scheme='incidentfield') assert validator.is_valid_scheme() is answer