Exemple #1
0
class SubmissionFileValidationTest(unittest.TestCase):
    validator = None

    def setUp(self):
        self.base_dir = os.path.dirname(os.path.realpath(__file__))

        self.valid_license_file = 'test_data/valid_submission_license.yaml'
        self.valid_file = 'test_data/valid_submission.yaml'
        self.valid_file_with_associated_records = 'test_data/valid_submission_with_associated_record.yaml'
        self.valid_empty_file = 'test_data/valid_submission_empty.yaml'
        self.invalid_file = 'test_data/invalid_submission.yaml'
        self.invalid_syntax_file = 'test_data/invalid_syntax_submission.yaml'
        self.invalid_parser_file = 'test_data/invalid_parser_submission.yaml'

    def test_valid_submission_yaml(self):
        print(
            '___SUBMISSION_FILE_VALIDATION: Testing valid yaml submission___')

        self.validator = None
        self.validator = SubmissionFileValidator()
        valid_sub_yaml = os.path.join(self.base_dir, self.valid_file)
        sub_yaml_obj = yaml.load_all(open(valid_sub_yaml, 'r'), Loader=Loader)
        self.validator.validate(file_path=valid_sub_yaml, data=sub_yaml_obj)
        self.validator.print_errors(valid_sub_yaml)

    def test_no_file_path_supplied(self):
        self.validator = SubmissionFileValidator()
        try:
            self.validator.validate(file_path=None)
        except LookupError as le:
            assert (le)

    def test_invalid_syntax(self):
        self.validator = SubmissionFileValidator()
        invalid_syntax_file = os.path.join(self.base_dir,
                                           self.invalid_syntax_file)

        self.assertFalse(
            self.validator.validate(file_path=invalid_syntax_file))

        self.assertTrue(self.validator.has_errors(invalid_syntax_file))
        self.assertTrue(
            len(self.validator.get_messages(invalid_syntax_file)) == 1)
        self.validator.print_errors(invalid_syntax_file)
        for message in self.validator.get_messages(invalid_syntax_file):
            print(message.message)
            self.assertTrue(
                message.message.index("There was a problem parsing the file.")
                == 0)

        self.assertTrue(len(self.validator.get_messages()) == 1)
        self.validator.clear_messages()
        self.assertTrue(len(self.validator.get_messages()) == 0)

    def test_valid_submission_yaml_with_associated_records(self):
        print(
            '___SUBMISSION_FILE_VALIDATION: Testing valid yaml submission with associated records___'
        )

        self.validator = None
        self.validator = SubmissionFileValidator()
        valid_sub_yaml = os.path.join(self.base_dir,
                                      self.valid_file_with_associated_records)
        is_valid = self.validator.validate(file_path=valid_sub_yaml)
        self.validator.print_errors(valid_sub_yaml)

        self.assertTrue(is_valid)
        self.assertTrue(not self.validator.has_errors(valid_sub_yaml))

    def test_valid_submission_yaml_with_empty_section(self):
        print('___SUBMISSION_FILE_VALIDATION: Testing valid yaml ' \
              'submission without main section___')

        self.validator = None
        self.validator = SubmissionFileValidator()
        valid_sub_yaml = os.path.join(self.base_dir, self.valid_empty_file)

        self.assertEqual(self.validator.validate(file_path=valid_sub_yaml),
                         True)
        self.validator.print_errors(valid_sub_yaml)

    def test_valid_submission_yaml_with_license(self):
        print('___SUBMISSION_FILE_VALIDATION: ' \
              'Testing valid yaml submission with license___')

        self.validator = None
        self.validator = SubmissionFileValidator()
        valid_sub_yaml = os.path.join(self.base_dir, self.valid_license_file)

        is_valid = self.validator.validate(file_path=valid_sub_yaml)
        self.validator.print_errors(valid_sub_yaml)
        self.assertEqual(is_valid, True)

    def test_invalid_submission_yaml(self):
        print('___SUBMISSION_FILE_VALIDATION: ' \
              'Testing invalid yaml submission___')
        self.validator = None
        self.validator = SubmissionFileValidator()
        invalid_sub_yaml = os.path.join(self.base_dir, self.invalid_file)

        self.assertEqual(self.validator.validate(file_path=invalid_sub_yaml),
                         False)

        self.validator.print_errors(invalid_sub_yaml)

    def test_invalid_parser_submission_yaml(self):
        print('___SUBMISSION_FILE_VALIDATION: ' \
              'Testing invalid parser yaml submission___')
        self.validator = None
        self.validator = SubmissionFileValidator()
        invalid_sub_yaml = os.path.join(self.base_dir,
                                        self.invalid_parser_file)

        self.assertEqual(self.validator.validate(file_path=invalid_sub_yaml),
                         False)

        self.validator.print_errors(invalid_sub_yaml)

    def test_ioerror_submission_yaml(self):
        print('___SUBMISSION_FILE_VALIDATION: ' \
              'Testing ioerror yaml submission___')
        self.validator = None
        self.validator = SubmissionFileValidator()
        invalid_sub_yaml = os.path.join(self.base_dir, self.valid_file[:-1])

        self.assertEqual(self.validator.validate(file_path=invalid_sub_yaml),
                         False)

        self.validator.print_errors(invalid_sub_yaml)
Exemple #2
0
from hepdata_validator.submission_file_validator import SubmissionFileValidator

submission_file_validator = SubmissionFileValidator()
submission_file_path = 'submission/submission.yaml'

# the validate method takes a string representing the file path.
is_valid_submission_file = submission_file_validator.validate(file_path=submission_file_path)

# if there are any error messages, they are retrievable through this call
submission_file_validator.get_messages()

# the error messages can be printed
submission_file_validator.print_errors(submission_file_path)
class SubmissionFileValidationTest(unittest.TestCase):
    validator = None

    def setUp(self):
        self.base_dir = os.path.dirname(os.path.realpath(__file__))

        self.valid_license_file = 'test_data/valid_submission_license.yaml'
        self.valid_file = 'test_data/valid_submission.yaml'
        self.valid_file_with_associated_records = 'test_data/valid_submission_with_associated_record.yaml'
        self.valid_empty_file = 'test_data/valid_submission_empty.yaml'
        self.invalid_file = 'test_data/invalid_submission.yaml'
        self.invalid_syntax_file = 'test_data/invalid_syntax_submission.yaml'

    def test_valid_submission_yaml(self):
        print '___SUBMISSION_FILE_VALIDATION: Testing valid yaml submission___'

        self.validator = None
        self.validator = SubmissionFileValidator()
        valid_sub_yaml = os.path.join(self.base_dir, self.valid_file)

        sub_yaml_obj = yaml.load_all(open(valid_sub_yaml, 'r'))
        self.validator.validate(file_path=valid_sub_yaml, data=sub_yaml_obj)
        self.validator.print_errors(valid_sub_yaml)

    def test_no_file_path_supplied(self):
        self.validator = SubmissionFileValidator()
        try:
            self.validator.validate(file_path=None)
        except LookupError as le:
            assert (le)

    def test_invalid_syntax(self):
        self.validator = SubmissionFileValidator()
        invalid_syntax_file = os.path.join(self.base_dir, self.invalid_syntax_file)

        self.assertFalse(self.validator.validate(file_path=invalid_syntax_file))

        self.assertTrue(self.validator.has_errors(invalid_syntax_file))
        self.assertTrue(len(self.validator.get_messages(invalid_syntax_file)) == 1)
        self.validator.print_errors(invalid_syntax_file)
        for message in self.validator.get_messages(invalid_syntax_file):
            print message.message
            self.assertTrue(message.message.index("There was a problem parsing the file.") == 0)

        self.assertTrue(len(self.validator.get_messages()) == 1)
        self.validator.clear_messages()
        self.assertTrue(len(self.validator.get_messages()) == 0)

    def test_valid_submission_yaml_with_associated_records(self):
        print '___SUBMISSION_FILE_VALIDATION: Testing valid yaml submission with associated records___'

        self.validator = None
        self.validator = SubmissionFileValidator()
        valid_sub_yaml = os.path.join(self.base_dir, self.valid_file_with_associated_records)

        self.assertTrue(self.validator.validate(file_path=valid_sub_yaml))
        self.assertTrue(not self.validator.has_errors(valid_sub_yaml))
        self.validator.print_errors(valid_sub_yaml)

    def test_valid_submission_yaml_with_empty_section(self):
        print '___SUBMISSION_FILE_VALIDATION: Testing valid yaml ' \
              'submission without main section___'

        self.validator = None
        self.validator = SubmissionFileValidator()
        valid_sub_yaml = os.path.join(self.base_dir, self.valid_empty_file)

        self.assertEqual(self.validator.validate(file_path=valid_sub_yaml), True)
        self.validator.print_errors(valid_sub_yaml)

    def test_valid_submission_yaml_with_license(self):
        print '___SUBMISSION_FILE_VALIDATION: ' \
              'Testing valid yaml submission with license___'

        self.validator = None
        self.validator = SubmissionFileValidator()
        valid_sub_yaml = os.path.join(self.base_dir,
                                      self.valid_license_file)

        self.assertEqual(self.validator.validate(file_path=valid_sub_yaml), True)

        self.validator.print_errors(valid_sub_yaml)

    def test_invalid_submission_yaml(self):
        print '___SUBMISSION_FILE_VALIDATION: ' \
              'Testing invalid yaml submission___'
        self.validator = None
        self.validator = SubmissionFileValidator()
        invalid_sub_yaml = os.path.join(self.base_dir, self.invalid_file)

        self.assertEqual(self.validator.validate(
            file_path=invalid_sub_yaml), False
        )

        self.validator.print_errors(invalid_sub_yaml)