Skip to content

Commit d44547b

Browse files
committed
Add unit tests
Signed-off-by: tdruez <[email protected]>
1 parent 85b23d6 commit d44547b

File tree

4 files changed

+58
-1
lines changed

4 files changed

+58
-1
lines changed

component_catalog/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2045,7 +2045,8 @@ def inferred_repo_url(self):
20452045

20462046
def infer_download_url(self):
20472047
"""Infer the download URL deduced from the Package URL (purl)."""
2048-
return download.infer_download_url(self.package_url)
2048+
if self.package_url:
2049+
return download.infer_download_url(self.package_url)
20492050

20502051
def get_url(self, name, params=None, include_identifier=False):
20512052
if not params:

component_catalog/tests/test_models.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2576,6 +2576,15 @@ def test_package_model_inferred_repo_url_property(self):
25762576
expected = "https://github.com/package-url/packageurl-python/tree/v0.10.4"
25772577
self.assertEqual(expected, package1.inferred_repo_url)
25782578

2579+
def test_package_model_infer_download_url(self):
2580+
package1 = make_package(self.dataspace, filename="package")
2581+
self.assertIsNone(package1.infer_download_url())
2582+
2583+
package1.set_package_url("pkg:nuget/[email protected]")
2584+
package1.save()
2585+
expected_download_url = "https://www.nuget.org/api/v2/package/Azure.Core/1.45.0"
2586+
self.assertEqual(expected_download_url, package1.infer_download_url())
2587+
25792588
@mock.patch("dejacode_toolkit.purldb.PurlDB.find_packages")
25802589
def test_package_model_get_purldb_entries(self, mock_find_packages):
25812590
purl1 = "pkg:pypi/[email protected]"
@@ -2758,6 +2767,12 @@ def test_package_queryset_has_package_url(self):
27582767
qs = Package.objects.has_package_url()
27592768
self.assertQuerySetEqual(qs, [package1])
27602769

2770+
def test_package_queryset_has_download_url(self):
2771+
package1 = make_package(self.dataspace, download_url="https://download.url")
2772+
make_package(self.dataspace)
2773+
qs = Package.objects.has_download_url()
2774+
self.assertQuerySetEqual(qs, [package1])
2775+
27612776
def test_package_queryset_annotate_sortable_identifier(self):
27622777
package1 = make_package(self.dataspace, package_url="pkg:pypi/[email protected]")
27632778
package2 = make_package(self.dataspace)

product_portfolio/tests/test_api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,7 @@ def test_api_product_endpoint_load_sboms_action(self):
407407

408408
data = {
409409
"input_file": ContentFile("{}", name="sbom.json"),
410+
"infer_download_urls": True,
410411
"update_existing_packages": False,
411412
"scan_all_packages": False,
412413
}
@@ -436,6 +437,7 @@ def test_api_product_endpoint_import_manifests_action(self):
436437

437438
data = {
438439
"input_file": ContentFile("Content", name="requirements.txt"),
440+
"infer_download_urls": True,
439441
"update_existing_packages": False,
440442
"scan_all_packages": False,
441443
}

product_portfolio/tests/test_models.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,45 @@ def test_product_model_is_locked_property(self):
544544
product = Product.unsecured_objects.get(pk=product.pk)
545545
self.assertTrue(product.is_locked)
546546

547+
def test_product_model_improve_packages_from_purl(self):
548+
product = make_product(self.dataspace)
549+
package1 = make_package(self.dataspace, package_url="pkg:nuget/[email protected]")
550+
make_product_package(product, package=package1)
551+
552+
product.refresh_from_db()
553+
updated_packages = product.improve_packages_from_purl()
554+
self.assertEqual([package1], updated_packages)
555+
556+
package1.refresh_from_db()
557+
expected_download_url = "https://www.nuget.org/api/v2/package/Azure.Core/1.45.0"
558+
self.assertEqual(expected_download_url, package1.download_url)
559+
560+
@mock.patch("dje.tasks.scancodeio_submit_scan.delay")
561+
def test_product_model_scan_all_packages_task(self, mock_scancodeio_submit_scan):
562+
product = make_product(self.dataspace)
563+
package1 = make_package(self.dataspace, package_url="pkg:nuget/[email protected]")
564+
make_product_package(product, package=package1)
565+
566+
mock_scancodeio_submit_scan.return_value = None
567+
product.scan_all_packages_task(user=self.super_user)
568+
mock_scancodeio_submit_scan.assert_called_with(
569+
uris=[],
570+
user_uuid=self.super_user.uuid,
571+
dataspace_uuid=self.super_user.dataspace.uuid,
572+
)
573+
package1.refresh_from_db()
574+
self.assertEqual("", package1.download_url)
575+
576+
expected_download_url = "https://www.nuget.org/api/v2/package/Azure.Core/1.45.0"
577+
product.scan_all_packages_task(user=self.super_user, infer_download_urls=True)
578+
mock_scancodeio_submit_scan.assert_called_with(
579+
uris=[expected_download_url],
580+
user_uuid=self.super_user.uuid,
581+
dataspace_uuid=self.super_user.dataspace.uuid,
582+
)
583+
package1.refresh_from_db()
584+
self.assertEqual(expected_download_url, package1.download_url)
585+
547586
@mock.patch("component_catalog.models.Package.update_from_purldb")
548587
def test_product_model_improve_packages_from_purldb(self, mock_update_from_purldb):
549588
mock_update_from_purldb.return_value = 1

0 commit comments

Comments
 (0)