@@ -77,6 +77,29 @@ def test_package_detail_view(self):
7777 package = PackageDetails (kwargs = {"purl" : "pkg:nginx/nginx@1.0.15" }).get_object ()
7878 assert package .purl == "pkg:nginx/nginx@1.0.15"
7979
80+ def test_package_vulnerability_filter (self ):
81+ vulnerability = Vulnerability .objects .create (
82+ vulnerability_id = "VCID-TEST" , summary = "Test Vulnerability for filtering"
83+ )
84+ vulnerable_package = Package .objects .get (package_url = "pkg:nginx/nginx@1.20.0" )
85+ AffectedByPackageRelatedVulnerability .objects .create (
86+ vulnerability = vulnerability , package = vulnerable_package , created_by = "test"
87+ )
88+ response = self .client .get ("/packages/search?search=nginx&vulnerable_only=true" )
89+ self .assertEqual (response .status_code , 200 )
90+ self .assertIn (vulnerable_package .purl , str (response .content ))
91+ self .assertNotIn ("pkg:nginx/nginx@1.21.0" , str (response .content ))
92+
93+ response = self .client .get ("/packages/search?search=nginx&vulnerable_only=false" )
94+ self .assertEqual (response .status_code , 200 )
95+ self .assertNotIn (vulnerable_package .purl , str (response .content ))
96+ self .assertIn ("pkg:nginx/nginx@1.21.0" , str (response .content ))
97+
98+ response = self .client .get ("/packages/search?search=nginx" )
99+ self .assertEqual (response .status_code , 200 )
100+ self .assertIn (vulnerable_package .purl , str (response .content ))
101+ self .assertIn ("pkg:nginx/nginx@1.21.0" , str (response .content ))
102+
80103 def test_package_view_with_purl_fragment (self ):
81104 qs = PackageSearch ().get_queryset (query = "nginx@1.0.15" )
82105 pkgs = list (qs )
0 commit comments