|
45 | 45 | from license_library.models import LicenseChoice
|
46 | 46 | from organization.models import Owner
|
47 | 47 | from policy.models import UsagePolicy
|
| 48 | +from vulnerabilities.tests import make_vulnerability |
48 | 49 |
|
49 | 50 |
|
50 | 51 | @override_settings(
|
@@ -1034,6 +1035,14 @@ def test_api_package_list_endpoint_filters(self):
|
1034 | 1035 | self.assertContains(response, self.package1_detail_url)
|
1035 | 1036 | self.assertNotContains(response, self.package2_detail_url)
|
1036 | 1037 |
|
| 1038 | + self.package1.risk_score = 9.0 |
| 1039 | + self.package1.save() |
| 1040 | + data = {"risk_score": "critical"} |
| 1041 | + response = self.client.get(self.package_list_url, data) |
| 1042 | + self.assertEqual(1, response.data["count"]) |
| 1043 | + self.assertContains(response, self.package1_detail_url) |
| 1044 | + self.assertNotContains(response, self.package2_detail_url) |
| 1045 | + |
1037 | 1046 | def test_api_package_list_endpoint_multiple_char_filters(self):
|
1038 | 1047 | self.client.login(username="super_user", password="secret")
|
1039 | 1048 | filters = "?md5={}&md5={}".format(self.package1.md5, self.package2.md5)
|
@@ -1325,6 +1334,37 @@ def test_api_package_endpoint_update_put(self):
|
1325 | 1334 | self.assertEqual(self.base_user, self.package1.created_by)
|
1326 | 1335 | self.assertEqual(self.super_user, self.package1.last_modified_by)
|
1327 | 1336 |
|
| 1337 | + def test_api_package_endpoint_vulnerabilities_features(self): |
| 1338 | + self.client.login(username="super_user", password="secret") |
| 1339 | + vulnerability1 = make_vulnerability(self.dataspace, affecting=self.package1) |
| 1340 | + vulnerability2 = make_vulnerability(self.dataspace) |
| 1341 | + self.package1.update(risk_score=9.0) |
| 1342 | + |
| 1343 | + data = {"is_vulnerable": "yes"} |
| 1344 | + response = self.client.get(self.package_list_url, data) |
| 1345 | + self.assertEqual(1, response.data["count"]) |
| 1346 | + self.assertContains(response, self.package1_detail_url) |
| 1347 | + self.assertNotContains(response, self.package2_detail_url) |
| 1348 | + |
| 1349 | + results = response.data["results"] |
| 1350 | + self.assertEqual("9.0", results[0]["risk_score"]) |
| 1351 | + self.assertEqual( |
| 1352 | + vulnerability1.vulnerability_id, |
| 1353 | + results[0]["affected_by_vulnerabilities"][0]["vulnerability_id"], |
| 1354 | + ) |
| 1355 | + |
| 1356 | + data = {"affected_by": vulnerability1.vulnerability_id} |
| 1357 | + response = self.client.get(self.package_list_url, data) |
| 1358 | + self.assertEqual(1, response.data["count"]) |
| 1359 | + self.assertContains(response, self.package1_detail_url) |
| 1360 | + self.assertNotContains(response, self.package2_detail_url) |
| 1361 | + |
| 1362 | + data = {"affected_by": vulnerability2.vulnerability_id} |
| 1363 | + response = self.client.get(self.package_list_url, data) |
| 1364 | + self.assertEqual(0, response.data["count"]) |
| 1365 | + self.assertNotContains(response, self.package1_detail_url) |
| 1366 | + self.assertNotContains(response, self.package2_detail_url) |
| 1367 | + |
1328 | 1368 | def test_api_package_license_choices_fields(self):
|
1329 | 1369 | self.client.login(username="super_user", password="secret")
|
1330 | 1370 |
|
|
0 commit comments