|
19 | 19 |
|
20 | 20 | from component_catalog.models import Component
|
21 | 21 | from component_catalog.models import Package
|
| 22 | +from component_catalog.tests import make_package |
22 | 23 | from dje.models import Dataspace
|
23 | 24 | from dje.tests import create_admin
|
24 | 25 | from dje.tests import create_superuser
|
@@ -1055,3 +1056,67 @@ def test_product_portfolio_import_packages_from_scancodeio_importer(
|
1055 | 1056 | )
|
1056 | 1057 | importer.save()
|
1057 | 1058 | mock_fetch.assert_called()
|
| 1059 | + |
| 1060 | + @mock.patch("dejacode_toolkit.scancodeio.ScanCodeIO.fetch_project_dependencies") |
| 1061 | + @mock.patch("dejacode_toolkit.scancodeio.ScanCodeIO.fetch_project_packages") |
| 1062 | + def test_product_portfolio_import_packages_from_scio_importer_multiple_package_objs( |
| 1063 | + self, mock_fetch_packages, mock_fetch_dependencies |
| 1064 | + ): |
| 1065 | + purl = "pkg:maven/org.apache.activemq/activemq-camel@5.11.0" |
| 1066 | + filename = "activemq-camel.zip" |
| 1067 | + |
| 1068 | + package_data = { |
| 1069 | + "type": "maven", |
| 1070 | + "namespace": "org.apache.activemq", |
| 1071 | + "name": "activemq-camel", |
| 1072 | + "version": "5.11.0", |
| 1073 | + "primary_language": "Java", |
| 1074 | + "purl": purl, |
| 1075 | + "declared_license_expression": "bsd-new", |
| 1076 | + } |
| 1077 | + mock_fetch_packages.return_value = [package_data] |
| 1078 | + mock_fetch_dependencies.return_value = [] |
| 1079 | + |
| 1080 | + package1 = make_package(self.dataspace, package_url=purl) |
| 1081 | + package2 = make_package(self.dataspace, package_url=purl, filename=filename) |
| 1082 | + |
| 1083 | + importer = ImportPackageFromScanCodeIO( |
| 1084 | + user=self.super_user, |
| 1085 | + project_uuid=uuid.uuid4(), |
| 1086 | + product=self.product1, |
| 1087 | + ) |
| 1088 | + created, existing, errors = importer.save() |
| 1089 | + self.assertEqual({}, created) |
| 1090 | + self.assertEqual(purl, existing["package"][0]) |
| 1091 | + self.assertEqual({}, errors) |
| 1092 | + # The package without the filename or download_url is used |
| 1093 | + self.assertEqual(package1, self.product1.packages.get()) |
| 1094 | + |
| 1095 | + self.product1.productpackages.all().delete() |
| 1096 | + package_data["filename"] = filename |
| 1097 | + importer = ImportPackageFromScanCodeIO( |
| 1098 | + user=self.super_user, |
| 1099 | + project_uuid=uuid.uuid4(), |
| 1100 | + product=self.product1, |
| 1101 | + ) |
| 1102 | + created, existing, errors = importer.save() |
| 1103 | + self.assertEqual({}, created) |
| 1104 | + self.assertEqual(purl, existing["package"][0]) |
| 1105 | + self.assertEqual({}, errors) |
| 1106 | + # The package with the filename is used |
| 1107 | + self.assertEqual(package2, self.product1.packages.get()) |
| 1108 | + |
| 1109 | + self.product1.productpackages.all().delete() |
| 1110 | + package_data["filename"] = "DO_NOT_EXISTS" |
| 1111 | + importer = ImportPackageFromScanCodeIO( |
| 1112 | + user=self.super_user, |
| 1113 | + project_uuid=uuid.uuid4(), |
| 1114 | + product=self.product1, |
| 1115 | + ) |
| 1116 | + created, existing, errors = importer.save() |
| 1117 | + # New package is created. |
| 1118 | + self.assertEqual( |
| 1119 | + {"package": ["pkg:maven/org.apache.activemq/activemq-camel@5.11.0"]}, created |
| 1120 | + ) |
| 1121 | + self.assertEqual({}, existing) |
| 1122 | + self.assertEqual({}, errors) |
0 commit comments