@@ -1121,6 +1121,49 @@ def test_product_portfolio_import_packages_from_scio_importer_multiple_package_o
11211121 self .assertEqual ({}, existing )
11221122 self .assertEqual ({}, errors )
11231123
1124+ @mock .patch ("dejacode_toolkit.scancodeio.ScanCodeIO.fetch_project_dependencies" )
1125+ @mock .patch ("dejacode_toolkit.scancodeio.ScanCodeIO.fetch_project_packages" )
1126+ def test_product_portfolio_import_packages_from_scio_importer_look_for_existing_package (
1127+ self , mock_fetch_packages , mock_fetch_dependencies
1128+ ):
1129+ purl = "pkg:maven/org.apache.activemq/[email protected] " 1130+ filename = "activemq-camel.zip"
1131+ download_url = "https://download.url/activemq-camel.zip"
1132+ package1 = make_package (self .dataspace , package_url = purl )
1133+ package2 = make_package (self .dataspace , package_url = purl , filename = filename )
1134+
1135+ package_data = {
1136+ "type" : "maven" ,
1137+ "namespace" : "org.apache.activemq" ,
1138+ "name" : "activemq-camel" ,
1139+ "version" : "5.11.0" ,
1140+ "purl" : purl ,
1141+ }
1142+ mock_fetch_packages .return_value = [package_data ]
1143+ mock_fetch_dependencies .return_value = []
1144+
1145+ importer = ImportPackageFromScanCodeIO (
1146+ user = self .super_user ,
1147+ project_uuid = uuid .uuid4 (),
1148+ product = self .product1 ,
1149+ )
1150+
1151+ # Check if the Package already exists in the local Dataspace
1152+ # Using exact match first: purl + download_url + filename
1153+ package = importer .look_for_existing_package (package_data )
1154+ self .assertEqual (package1 , package )
1155+
1156+ # 2 packages are matched, cannot defined the one that should be used
1157+ package1 .update (download_url = download_url )
1158+ package = importer .look_for_existing_package (package_data )
1159+ self .assertIsNone (package )
1160+
1161+ # If the package data does not include a download_url value:
1162+ # Attemp to find an existing package using purl-only match.
1163+ package2 .delete ()
1164+ package = importer .look_for_existing_package (package_data )
1165+ self .assertEqual (package1 , package )
1166+
11241167 @mock .patch ("dejacode_toolkit.scancodeio.ScanCodeIO.fetch_project_dependencies" )
11251168 @mock .patch ("dejacode_toolkit.scancodeio.ScanCodeIO.fetch_project_packages" )
11261169 def test_product_portfolio_import_packages_from_scio_importer_duplicate_dependency (
0 commit comments