Hanno Böck commited on 2019-12-16 20:45:03
Zeige 1 geänderte Dateien mit 24 Einfügungen und 0 Löschungen.
... | ... |
@@ -3,6 +3,7 @@ import glob |
3 | 3 |
import json |
4 | 4 |
import sys |
5 | 5 |
import difflib |
6 |
+import re |
|
6 | 7 |
|
7 | 8 |
|
8 | 9 |
class TestJsonLint(unittest.TestCase): |
... | ... |
@@ -23,6 +24,29 @@ class TestJsonLint(unittest.TestCase): |
23 | 24 |
valid = False |
24 | 25 |
self.assertTrue(valid) |
25 | 26 |
|
27 |
+ def test_json_values(self): |
|
28 |
+ jconfig = [] |
|
29 |
+ for cfile in glob.glob('freewvsdb/*.json'): |
|
30 |
+ with open(cfile) as json_file: |
|
31 |
+ jconfig += json.load(json_file) |
|
32 |
+ |
|
33 |
+ mkeys = set(['name', 'url', 'safe', 'vuln', 'detection']) |
|
34 |
+ for item in jconfig: |
|
35 |
+ |
|
36 |
+ # check for all mandatory keys |
|
37 |
+ self.assertEqual(mkeys.intersection(item.keys()), mkeys, |
|
38 |
+ msg="Missing key in %s" % item['name']) |
|
39 |
+ |
|
40 |
+ # check we have at least one detection |
|
41 |
+ self.assertTrue(len(item['detection']) >= 1, |
|
42 |
+ msg="No detection in %s" % item['name']) |
|
43 |
+ |
|
44 |
+ # vuln needs to be CVE or HTTPS URL |
|
45 |
+ self.assertTrue(re.match("^CVE-[0-9]*-[0-9]*$", item['vuln']) |
|
46 |
+ or item['vuln'].startswith("https://"), |
|
47 |
+ msg="%s: Invalid vuln %s" % |
|
48 |
+ (item['name'], item['vuln'])) |
|
49 |
+ |
|
26 | 50 |
|
27 | 51 |
if __name__ == '__main__': |
28 | 52 |
unittest.main() |
29 | 53 |