@@ -624,3 +624,62 @@ def test_scanpipe_check_vulnerabilities_pipeline_integration_test(
624
624
package1 .refresh_from_db ()
625
625
expected = {"discovered_vulnerabilities" : vulnerability_data }
626
626
self .assertEqual (expected , package1 .extra_data )
627
+
628
+ def test_scanpipe_inspect_manifest_pipeline_integration_test (self ):
629
+ pipeline_name = "inspect_manifest"
630
+ project1 = Project .objects .create (name = "Analysis" )
631
+
632
+ run = project1 .add_pipeline (pipeline_name )
633
+ pipeline = run .make_pipeline_instance ()
634
+
635
+ project1 .move_input_from (tempfile .mkstemp ()[1 ])
636
+ exitcode , out = pipeline .execute ()
637
+ self .assertEqual (1 , exitcode , msg = out )
638
+ self .assertIn ("No package type found for" , out )
639
+
640
+ @mock .patch ("scanpipe.pipes.resolve.resolver_api" )
641
+ def test_scanpipe_inspect_manifest_pipeline_pypi_integration_test (
642
+ self , resolver_api
643
+ ):
644
+ pipeline_name = "inspect_manifest"
645
+ project1 = Project .objects .create (name = "Analysis" )
646
+
647
+ run = project1 .add_pipeline (pipeline_name )
648
+ pipeline = run .make_pipeline_instance ()
649
+
650
+ resolver_api .return_value = mock .Mock (packages = [])
651
+ project1 .move_input_from (tempfile .mkstemp (suffix = "requirements.txt" )[1 ])
652
+ exitcode , out = pipeline .execute ()
653
+ self .assertEqual (1 , exitcode , msg = out )
654
+ self .assertIn ("No packages could be resolved" , out )
655
+
656
+ resolver_api .return_value = mock .Mock (packages = [package_data1 ])
657
+ exitcode , out = pipeline .execute ()
658
+ self .assertEqual (0 , exitcode , msg = out )
659
+
660
+ self .assertEqual (1 , project1 .discoveredpackages .count ())
661
+ discoveredpackage = project1 .discoveredpackages .get ()
662
+ exclude_fields = ["qualifiers" , "release_date" , "size" ]
663
+ for field_name , value in package_data1 .items ():
664
+ if value and field_name not in exclude_fields :
665
+ self .assertEqual (value , getattr (discoveredpackage , field_name ))
666
+
667
+ def test_scanpipe_inspect_manifest_pipeline_aboutfile_integration_test (self ):
668
+ pipeline_name = "inspect_manifest"
669
+ project1 = Project .objects .create (name = "Analysis" )
670
+
671
+ input_location = self .data_location / "Django-4.0.8-py3-none-any.whl.ABOUT"
672
+ project1 .copy_input_from (input_location )
673
+
674
+ run = project1 .add_pipeline (pipeline_name )
675
+ pipeline = run .make_pipeline_instance ()
676
+
677
+ exitcode , out = pipeline .execute ()
678
+ self .assertEqual (0 , exitcode , msg = out )
679
+
680
+ self .assertEqual (1 , project1 .discoveredpackages .count ())
681
+ discoveredpackage = project1 .discoveredpackages .get ()
682
+ self .assertEqual ("pypi" , discoveredpackage .type )
683
+ self .assertEqual ("django" , discoveredpackage .name )
684
+ self .assertEqual ("4.0.8" , discoveredpackage .version )
685
+ self .assertEqual ("bsd-new" , discoveredpackage .license_expression )
0 commit comments