@@ -1553,6 +1553,57 @@ def test_api_product_endpoint_vulnerabilities_features(self):
15531553 self .assertNotContains (response , self .product1_detail_url )
15541554 self .assertNotContains (response , self .product2_detail_url )
15551555
1556+ def test_api_productpackage_has_reachable_vulnerability_filter (self ):
1557+ self .client .login (username = "super_user" , password = "secret" )
1558+ vulnerability = make_vulnerability (self .dataspace , affecting = self .package1 )
1559+ make_vulnerability_analysis (self .pp1 , vulnerability , is_reachable = True )
1560+
1561+ data = {"has_reachable_vulnerability" : "true" }
1562+ response = self .client .get (self .productpackage_list_url , data )
1563+ self .assertEqual (1 , response .data ["count" ])
1564+ self .assertContains (response , self .pp1_detail_url )
1565+
1566+ data = {"has_reachable_vulnerability" : "false" }
1567+ response = self .client .get (self .productpackage_list_url , data )
1568+ self .assertEqual (0 , response .data ["count" ])
1569+
1570+ def test_api_product_has_reachable_vulnerability_filter (self ):
1571+ self .client .login (username = "super_user" , password = "secret" )
1572+ vulnerability = make_vulnerability (self .dataspace , affecting = self .package1 )
1573+ make_vulnerability_analysis (self .pp1 , vulnerability , is_reachable = True )
1574+
1575+ data = {"has_reachable_vulnerability" : "true" }
1576+ response = self .client .get (self .product_list_url , data )
1577+ self .assertEqual (1 , response .data ["count" ])
1578+ self .assertContains (response , self .product1_detail_url )
1579+ self .assertNotContains (response , self .product2_detail_url )
1580+
1581+ data = {"has_reachable_vulnerability" : "false" }
1582+ response = self .client .get (self .product_list_url , data )
1583+ self .assertEqual (0 , response .data ["count" ])
1584+
1585+ def test_api_product_has_reachable_vulnerability_filter_no_duplicates (self ):
1586+ self .client .login (username = "super_user" , password = "secret" )
1587+ vulnerability1 = make_vulnerability (self .dataspace , affecting = self .package1 )
1588+ vulnerability2 = make_vulnerability (self .dataspace , affecting = self .package1 )
1589+ make_vulnerability_analysis (self .pp1 , vulnerability1 , is_reachable = True )
1590+ make_vulnerability_analysis (self .pp1 , vulnerability2 , is_reachable = True )
1591+
1592+ data = {"has_reachable_vulnerability" : "true" }
1593+ response = self .client .get (self .product_list_url , data )
1594+ self .assertEqual (1 , response .data ["count" ])
1595+
1596+ def test_api_productpackage_has_reachable_vulnerability_filter_no_duplicates (self ):
1597+ self .client .login (username = "super_user" , password = "secret" )
1598+ vulnerability1 = make_vulnerability (self .dataspace , affecting = self .package1 )
1599+ vulnerability2 = make_vulnerability (self .dataspace , affecting = self .package1 )
1600+ make_vulnerability_analysis (self .pp1 , vulnerability1 , is_reachable = True )
1601+ make_vulnerability_analysis (self .pp1 , vulnerability2 , is_reachable = True )
1602+
1603+ data = {"has_reachable_vulnerability" : "true" }
1604+ response = self .client .get (self .productpackage_list_url , data )
1605+ self .assertEqual (1 , response .data ["count" ])
1606+
15561607 def test_api_codebaseresource_list_endpoint_results (self ):
15571608 self .client .login (username = "super_user" , password = "secret" )
15581609 response = self .client .get (self .codebase_resource_list_url )
0 commit comments