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
Beispiel #2
0
 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
Beispiel #3
0
 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()
Beispiel #5
0
 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
Beispiel #6
0
 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()
Beispiel #7
0
 def test_scheme_validation_reputation(self, path, answer):
     validator = StructureValidator(file_path=path,
                                    predefined_scheme='reputation')
     assert validator.is_valid_scheme() is answer
Beispiel #8
0
 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