@@ -447,19 +447,39 @@ def test_scanpipe_api_project_create_multiple_pipelines(self):
447
447
"pipeline" : "analyze_docker_image,scan_single_package" ,
448
448
}
449
449
response = self .csrf_client .post (self .project_list_url , data )
450
- self .assertEqual (status .HTTP_400_BAD_REQUEST , response .status_code )
451
- expected = {
450
+ self .assertEqual (status .HTTP_201_CREATED , response .status_code )
451
+ self .assertEqual (2 , len (response .data ["runs" ]))
452
+ self .assertEqual (
453
+ "analyze_docker_image" , response .data ["runs" ][0 ]["pipeline_name" ]
454
+ )
455
+ self .assertEqual (
456
+ "scan_single_package" , response .data ["runs" ][1 ]["pipeline_name" ]
457
+ )
458
+
459
+ data = {
460
+ "name" : "Mix of string and list plus selected groups" ,
452
461
"pipeline" : [
453
- ErrorDetail (
454
- string = (
455
- '"analyze_docker_image,scan_single_package" '
456
- "is not a valid choice."
457
- ),
458
- code = "invalid_choice" ,
459
- )
460
- ]
462
+ "analyze_docker_image" ,
463
+ "inspect_packages:StaticResolver,scan_single_package" ,
464
+ ],
461
465
}
462
- self .assertEqual (expected , response .data )
466
+ response = self .csrf_client .post (self .project_list_url , data )
467
+ self .assertEqual (status .HTTP_201_CREATED , response .status_code )
468
+ self .assertEqual (
469
+ "analyze_docker_image" , response .data ["runs" ][0 ]["pipeline_name" ]
470
+ )
471
+ self .assertEqual ("inspect_packages" , response .data ["runs" ][1 ]["pipeline_name" ])
472
+ self .assertEqual (
473
+ "scan_single_package" , response .data ["runs" ][2 ]["pipeline_name" ]
474
+ )
475
+ self .assertEqual (
476
+ ["StaticResolver" ], response .data ["runs" ][1 ]["selected_groups" ]
477
+ )
478
+ runs = Project .objects .get (name = data ["name" ]).runs .all ()
479
+ self .assertEqual ("analyze_docker_image" , runs [0 ].pipeline_name )
480
+ self .assertEqual ("inspect_packages" , runs [1 ].pipeline_name )
481
+ self .assertEqual ("scan_single_package" , runs [2 ].pipeline_name )
482
+ self .assertEqual (["StaticResolver" ], runs [1 ].selected_groups )
463
483
464
484
def test_scanpipe_api_project_create_pipeline_old_name_compatibility (self ):
465
485
data = {
@@ -498,6 +518,20 @@ def test_scanpipe_api_project_create_labels(self):
498
518
project = Project .objects .get (name = data ["name" ])
499
519
self .assertEqual (data ["labels" ], sorted (project .labels .names ()))
500
520
521
+ def test_scanpipe_api_project_create_pipeline_groups (self ):
522
+ data = {
523
+ "name" : "Project1" ,
524
+ "pipeline" : "inspect_packages:StaticResolver" ,
525
+ }
526
+ response = self .csrf_client .post (self .project_list_url , data )
527
+ self .assertEqual (status .HTTP_201_CREATED , response .status_code )
528
+ self .assertEqual (
529
+ ["StaticResolver" ], response .data ["runs" ][0 ]["selected_groups" ]
530
+ )
531
+ run = Project .objects .get (name = "Project1" ).runs .get ()
532
+ self .assertEqual ("inspect_packages" , run .pipeline_name )
533
+ self .assertEqual (["StaticResolver" ], run .selected_groups )
534
+
501
535
def test_scanpipe_api_project_create_webhooks (self ):
502
536
data = {
503
537
"name" : "Project1" ,
@@ -862,7 +896,9 @@ def test_scanpipe_api_project_action_add_pipeline_groups(self):
862
896
}
863
897
response = self .csrf_client .post (url , data = data )
864
898
self .assertEqual ({"status" : "Pipeline added." }, response .data )
865
- self .assertEqual ("analyze_docker_image" , self .project1 .runs .get ().pipeline_name )
899
+ run = self .project1 .runs .get ()
900
+ self .assertEqual ("analyze_docker_image" , run .pipeline_name )
901
+ self .assertEqual (["group1" , "group2" ], run .selected_groups )
866
902
867
903
def test_scanpipe_api_project_action_add_input (self ):
868
904
url = reverse ("project-add-input" , args = [self .project1 .uuid ])
0 commit comments