@@ -144,7 +144,7 @@ def test_scanpipe_management_command_create_project_pipelines(self):
144144 "analyze_root_filesystem_or_vm_image" ,
145145 "scan_single_package" ,
146146 ]
147- self .assertEqual (expected , [ run . pipeline_name for run in project .runs . all ()] )
147+ self .assertEqual (expected , project .pipelines )
148148 run = project .runs .get (pipeline_name = "analyze_root_filesystem_or_vm_image" )
149149 self .assertEqual (["group1" , "group2" ], run .selected_groups )
150150
@@ -422,7 +422,7 @@ def test_scanpipe_management_command_add_pipeline(self):
422422 "analyze_root_filesystem_or_vm_image" ,
423423 "scan_single_package" ,
424424 ]
425- self .assertEqual (expected , [ run . pipeline_name for run in project .runs . all ()] )
425+ self .assertEqual (expected , project .pipelines )
426426 run = project .runs .get (pipeline_name = "analyze_root_filesystem_or_vm_image" )
427427 self .assertEqual (["group1" , "group2" ], run .selected_groups )
428428
@@ -1474,6 +1474,56 @@ def test_scanpipe_management_command_extract_tag_from_input_file(self):
14741474 expected = ("file.ext" , "tag1,tag2" )
14751475 self .assertEqual (expected , extract_tag ("file.ext:tag1,tag2" ))
14761476
1477+ @mock .patch ("scanpipe.pipes.kubernetes.get_images_from_kubectl" )
1478+ def test_scanpipe_management_command_analyze_kubernetes_from_kubectl (
1479+ self , mock_get_images
1480+ ):
1481+ mock_get_images .return_value = ["nginx:latest" , "redis:alpine" ]
1482+
1483+ project_name = "kube-from-cluster-single"
1484+ out = StringIO ()
1485+ call_command (
1486+ "analyze-kubernetes" ,
1487+ project_name ,
1488+ "--label" ,
1489+ "label1" ,
1490+ "--notes" ,
1491+ "Notes" ,
1492+ "--find-vulnerabilities" ,
1493+ stdout = out ,
1494+ )
1495+ self .assertIn ("Extracting images from Kubernetes cluster" , out .getvalue ())
1496+ self .assertEqual (1 , Project .objects .count ())
1497+ project = Project .objects .get (name = project_name )
1498+ self .assertEqual (["label1" ], list (project .labels .names ()))
1499+ self .assertEqual ("Notes" , project .notes )
1500+ self .assertEqual (
1501+ ["analyze_docker_image" , "find_vulnerabilities" ], project .pipelines
1502+ )
1503+ expected = ["docker://nginx:latest" , "docker://redis:alpine" ]
1504+ download_urls = project .inputsources .values_list ("download_url" , flat = True )
1505+ self .assertEqual (expected , sorted (download_urls ))
1506+ project .delete ()
1507+
1508+ project_name = "kube-from-cluster-multi"
1509+ out = StringIO ()
1510+ call_command (
1511+ "analyze-kubernetes" ,
1512+ project_name ,
1513+ "--multi" ,
1514+ stdout = out ,
1515+ )
1516+ self .assertIn ("Extracting images from Kubernetes cluster" , out .getvalue ())
1517+ self .assertEqual (2 , Project .objects .count ())
1518+ expected = [
1519+ "kube-from-cluster-multi: nginx:latest" ,
1520+ "kube-from-cluster-multi: redis:alpine" ,
1521+ ]
1522+ names = Project .objects .values_list ("name" , flat = True )
1523+ self .assertEqual (expected , sorted (names ))
1524+ for project in Project .objects .all ():
1525+ self .assertEqual (1 , project .inputsources .count ())
1526+
14771527
14781528class ScanPipeManagementCommandMixinTest (TestCase ):
14791529 class CreateProjectCommand (
@@ -1525,7 +1575,7 @@ def test_scanpipe_management_command_mixin_create_project_pipelines(self):
15251575 "analyze_root_filesystem_or_vm_image" ,
15261576 "scan_single_package" ,
15271577 ]
1528- self .assertEqual (expected , [ run . pipeline_name for run in project .runs . all ()] )
1578+ self .assertEqual (expected , project .pipelines )
15291579 run = project .runs .get (pipeline_name = "analyze_root_filesystem_or_vm_image" )
15301580 self .assertEqual (["group1" , "group2" ], run .selected_groups )
15311581
0 commit comments