git.schokokeks.org
Repositories
Help
Report an Issue
freewvs.git
Code
Commits
Branches
Tags
Suche
Strukturansicht:
9a78894
Branches
Tags
master
v0.1.1
v0.1.2
v0.1.3
v0.1.4
freewvs.git
tests
test_jsonlint.py
add sanity checks for json data
Hanno Böck
commited
9a78894
at 2019-12-16 20:45:03
test_jsonlint.py
Blame
History
Raw
import unittest import glob import json import sys import difflib import re class TestJsonLint(unittest.TestCase): @unittest.skipIf(sys.version_info < (3, 6, 0), "json.dumps force-sorts on python 3.5") def test_json_lint(self): valid = True for f in glob.glob("freewvsdb/*.json"): fp = open(f, "r") orig = fp.read() fp.close() tmp = json.loads(orig) new = json.dumps(tmp, indent=2) if orig != new: print("json %s not valid" % f) sys.stdout.writelines(difflib.unified_diff(orig, new)) valid = False self.assertTrue(valid) def test_json_values(self): jconfig = [] for cfile in glob.glob('freewvsdb/*.json'): with open(cfile) as json_file: jconfig += json.load(json_file) mkeys = set(['name', 'url', 'safe', 'vuln', 'detection']) for item in jconfig: # check for all mandatory keys self.assertEqual(mkeys.intersection(item.keys()), mkeys, msg="Missing key in %s" % item['name']) # check we have at least one detection self.assertTrue(len(item['detection']) >= 1, msg="No detection in %s" % item['name']) # vuln needs to be CVE or HTTPS URL self.assertTrue(re.match("^CVE-[0-9]*-[0-9]*$", item['vuln']) or item['vuln'].startswith("https://"), msg="%s: Invalid vuln %s" % (item['name'], item['vuln'])) if __name__ == '__main__': unittest.main()