2626
2727from django .test import TestCase
2828
29- from vulnerabilities .models import Package
3029from vulnerabilities .api import PackageSerializer
3130from vulnerabilities .data_dump import debian_dump
3231from vulnerabilities .data_dump import ubuntu_dump
32+ from vulnerabilities .models import Package
3333from vulnerabilities .scraper import debian
3434from vulnerabilities .scraper import ubuntu
3535
3838TEST_DATA = os .path .join (BASE_DIR , 'test_data/' )
3939
4040
41- class TestResponse (TestCase ):
42- def test_debian_response (self ):
41+ class TestDebianResponse (TestCase ):
42+ @classmethod
43+ def setUpTestData (cls ):
4344 with open (os .path .join (TEST_DATA , 'debian.json' )) as f :
4445 test_data = json .load (f )
4546
4647 extract_data = debian .extract_vulnerabilities (test_data )
4748 debian_dump (extract_data )
48- response = self .client .get ('/api/packages/?name=mimetex' , format = 'json' ).data
4949
50- self .assertEqual (4 , response ['count' ])
50+ def setUp (self ):
51+ self .response = self .client .get ('/api/packages/?name=mimetex' , format = 'json' ).data
5152
52- first_result = response ['results' ][0 ]
53+ def test_count (self ):
54+ self .assertEqual (4 , self .response ['count' ])
55+
56+ def test_name (self ):
57+ first_result = self .response ['results' ][0 ]
5358 self .assertEqual ('mimetex' , first_result ['name' ])
5459
55- versions = {r ['version' ] for r in response ['results' ]}
60+ def test_version (self ):
61+ versions = {r ['version' ] for r in self .response ['results' ]}
5662 self .assertIn ('1.50-1.1' , versions )
5763 self .assertIn ('1.74-1' , versions )
5864
65+ def test_packageurl (self ):
66+ purls = {r ['package_url' ] for r in self .response ['results' ]}
67+ self .assertIn ('pkg:deb/debian/mimetex@1.50-1.1?distro=jessie' , purls )
68+ self .assertIn ('pkg:deb/debian/mimetex@1.74-1?distro=jessie' , purls )
69+
70+
71+ class TestUbuntuResponse (TestCase ):
5972 def test_ubuntu_response (self ):
6073 with open (os .path .join (TEST_DATA , 'ubuntu_main.html' )) as f :
6174 test_data = f .read ()
@@ -75,12 +88,15 @@ def test_ubuntu_response(self):
7588
7689
7790class TestSerializers (TestCase ):
78- def test_serializers (self ):
91+ @classmethod
92+ def setUpTestData (cls ):
7993 with open (os .path .join (TEST_DATA , 'debian.json' )) as f :
8094 test_data = json .load (f )
95+
8196 extract_data = debian .extract_vulnerabilities (test_data )
8297 debian_dump (extract_data )
8398
99+ def test_package_serializer (self ):
84100 pk = Package .objects .filter (name = "mimetex" )
85101 response = PackageSerializer (pk , many = True ).data
86102
@@ -92,3 +108,7 @@ def test_serializers(self):
92108 versions = {r ['version' ] for r in response }
93109 self .assertIn ('1.50-1.1' , versions )
94110 self .assertIn ('1.74-1' , versions )
111+
112+ purls = {r ['package_url' ] for r in response }
113+ self .assertIn ('pkg:deb/debian/mimetex@1.50-1.1?distro=jessie' , purls )
114+ self .assertIn ('pkg:deb/debian/mimetex@1.74-1?distro=jessie' , purls )
0 commit comments