@@ -624,3 +624,62 @@ def test_scanpipe_check_vulnerabilities_pipeline_integration_test(
624624 package1 .refresh_from_db ()
625625 expected = {"discovered_vulnerabilities" : vulnerability_data }
626626 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