@@ -47,26 +47,64 @@ def setUpTestData(cls):
4747 extract_data = debian .extract_vulnerabilities (test_data )
4848 debian_dump (extract_data )
4949
50- def setUp (self ):
51- self .response = self .client .get ('/api/packages/?name=mimetex' , format = 'json' ).data
50+ Package .objects .create (
51+ name = 'mimetex' ,
52+ version = '1.50-1.1' ,
53+ type = 'deb' ,
54+ namespace = 'ubuntu'
55+ )
5256
53- def test_count (self ):
54- self .assertEqual ( 4 , self . response [ 'count' ])
57+ def test_query_by_name (self ):
58+ response = self .client . get ( '/api/packages/?name=mimetex' , format = 'json' ). data
5559
56- def test_name (self ):
57- first_result = self .response ['results' ][0 ]
60+ self .assertEqual (5 , response ['count' ])
61+
62+ first_result = response ['results' ][0 ]
5863 self .assertEqual ('mimetex' , first_result ['name' ])
5964
60- def test_version (self ):
61- versions = {r ['version' ] for r in self .response ['results' ]}
65+ versions = {r ['version' ] for r in response ['results' ]}
6266 self .assertIn ('1.50-1.1' , versions )
6367 self .assertIn ('1.74-1' , versions )
6468
65- def test_packageurl (self ):
66- purls = {r ['package_url' ] for r in self .response ['results' ]}
69+ purls = {r ['package_url' ] for r in response ['results' ]}
6770 self .assertIn ('pkg:deb/debian/mimetex@1.50-1.1?distro=jessie' , purls )
6871 self .assertIn ('pkg:deb/debian/mimetex@1.74-1?distro=jessie' , purls )
6972
73+ def test_query_by_invalid_package_url (self ):
74+ url = '/api/packages/?package_url=invalid_purl'
75+ response = self .client .get (url , format = 'json' )
76+
77+ self .assertEqual (400 , response .status_code )
78+ self .assertIn ('error' , response .data )
79+ error = response .data ['error' ]
80+ self .assertIn ('invalid_purl' , error )
81+
82+ def test_query_by_package_url (self ):
83+ url = '/api/packages/?package_url=pkg:deb/debian/mimetex@1.50-1.1?distro=jessie'
84+ response = self .client .get (url , format = 'json' ).data
85+
86+ self .assertEqual (2 , response ['count' ])
87+
88+ first_result = response ['results' ][0 ]
89+ self .assertEqual ('mimetex' , first_result ['name' ])
90+
91+ versions = {r ['version' ] for r in response ['results' ]}
92+ self .assertIn ('1.50-1.1' , versions )
93+ self .assertNotIn ('1.74-1' , versions )
94+
95+ def test_query_by_package_url_without_namespace (self ):
96+ url = '/api/packages/?package_url=pkg:deb/mimetex@1.50-1.1'
97+ response = self .client .get (url , format = 'json' ).data
98+
99+ self .assertEqual (3 , response ['count' ])
100+
101+ first_result = response ['results' ][0 ]
102+ self .assertEqual ('mimetex' , first_result ['name' ])
103+
104+ purls = {r ['package_url' ] for r in response ['results' ]}
105+ self .assertIn ('pkg:deb/debian/mimetex@1.50-1.1?distro=jessie' , purls )
106+ self .assertIn ('pkg:deb/ubuntu/mimetex@1.50-1.1' , purls )
107+
70108
71109class TestUbuntuResponse (TestCase ):
72110 def test_ubuntu_response (self ):
0 commit comments