Skip to content

Commit b1fae3a

Browse files
committed
Add unit test for the package_content related features
Signed-off-by: tdruez <tdruez@aboutcode.org>
1 parent 1a340ce commit b1fae3a

3 files changed

Lines changed: 64 additions & 1 deletion

File tree

component_catalog/tests/test_models.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2711,6 +2711,42 @@ def test_package_model_update_from_purldb_multiple_entries(self, mock_get_purldb
27112711
self.assertEqual(["Keyword1", "Keyword2"], package1.keywords)
27122712
self.assertEqual("Python", package1.primary_language)
27132713

2714+
@mock.patch("component_catalog.models.Package.get_purldb_entries")
2715+
def test_package_model_update_from_purldb_multiple_entries_package_content(
2716+
self, mock_get_entries
2717+
):
2718+
purldb_entry_binary = {
2719+
"uuid": "e133e70b-8dd3-4cf1-9711-72b1f57523a0",
2720+
"purl": "pkg:pypi/boto3@1.37.26?file_name=boto3-1.37.26-py3-none-any.whl",
2721+
"type": "pypi",
2722+
"name": "boto3",
2723+
"version": "1.37.26",
2724+
"filename": "boto3-1.37.26-py3-none-any.whl",
2725+
"download_url": "https://files.pythonhosted.org/packages/boto3-1.37.26-py3-none-any.whl",
2726+
"package_content": "binary",
2727+
}
2728+
purldb_entry_source = {
2729+
"uuid": "326aa7a8-4f28-406d-89f9-c1404916925b",
2730+
"purl": "pkg:pypi/boto3@1.37.26?file_name=boto3-1.37.26.tar.gz",
2731+
"type": "pypi",
2732+
"name": "boto3",
2733+
"version": "1.37.26",
2734+
"filename": "boto3-1.37.26.tar.gz",
2735+
"download_url": "https://files.pythonhosted.org/packages/boto3-1.37.26.tar.gz",
2736+
"package_content": "source_archive",
2737+
}
2738+
2739+
mock_get_entries.return_value = [purldb_entry_binary, purldb_entry_source]
2740+
package1 = make_package(self.dataspace, package_url="pkg:pypi/boto3@1.37.26")
2741+
updated_fields = package1.update_from_purldb(self.user)
2742+
expected = ["download_url", "filename", "package_content"]
2743+
self.assertEqual(expected, sorted(updated_fields))
2744+
2745+
package1.refresh_from_db()
2746+
self.assertEqual(purldb_entry_source["download_url"], package1.download_url)
2747+
self.assertEqual(purldb_entry_source["filename"], package1.filename)
2748+
self.assertEqual("source_archive", package1.get_package_content_display())
2749+
27142750
@mock.patch("component_catalog.models.Package.get_purldb_entries")
27152751
def test_package_model_update_from_purldb_duplicate_exception(self, mock_get_purldb_entries):
27162752
package_url = "pkg:pypi/django@3.0"

component_catalog/tests/test_views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3413,7 +3413,7 @@ def test_component_catalog_package_add_view_initial_data(
34133413
"description": "Abbot Java GUI Test Library",
34143414
"license_expression": "bsd-new OR eps-1.0 OR apache-2.0 OR mit",
34153415
"declared_license_expression": "bsd-new OR eps-1.0 OR apache-2.0 OR mit",
3416-
'package_content': Package.PackageContentType.BINARY,
3416+
"package_content": Package.PackageContentType.BINARY,
34173417
}
34183418
self.assertEqual(expected, response.context["form"].initial)
34193419

purldb/tests/test_purldb_toolkit.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
from dejacode_toolkit.purldb import PurlDB
1414
from dejacode_toolkit.purldb import pick_purldb_entry
15+
from dejacode_toolkit.purldb import pick_source_package
1516
from dje.models import Dataspace
1617
from dje.tests import create_user
1718

@@ -75,3 +76,29 @@ def test_purldb_toolkit_pick_purldb_entry(self):
7576
self.assertEqual(entry2, pick_purldb_entry([entry1, entry2], purl=purl2))
7677
self.assertIsNone(pick_purldb_entry([entry1, entry1], purl=purl1))
7778
self.assertIsNone(pick_purldb_entry([entry1, entry2], purl=purl3))
79+
80+
def test_purldb_toolkit_pick_source_package(self):
81+
self.assertIsNone(pick_source_package(None))
82+
self.assertIsNone(pick_source_package([]))
83+
84+
entry_binary = {
85+
"purl": "pkg:pypi/boto3@1.37.26?file_name=boto3-1.37.26-py3-none-any.whl",
86+
"filename": "boto3-1.37.26-py3-none-any.whl",
87+
"download_url": "https://files.pythonhosted.org/boto3-1.37.26-py3-none-any.whl",
88+
"package_content": "binary",
89+
}
90+
entry_source = {
91+
"purl": "pkg:pypi/boto3@1.37.26?file_name=boto3-1.37.26.tar.gz",
92+
"filename": "boto3-1.37.26.tar.gz",
93+
"download_url": "https://files.pythonhosted.org/boto3-1.37.26.tar.gz",
94+
"package_content": "source_archive",
95+
}
96+
97+
self.assertEqual(entry_binary, pick_source_package([entry_binary]))
98+
self.assertIsNone(pick_source_package([entry_binary, entry_binary]))
99+
100+
self.assertEqual(entry_source, pick_source_package([entry_source]))
101+
self.assertEqual(entry_source, pick_source_package([entry_source, entry_source]))
102+
103+
self.assertEqual(entry_source, pick_source_package([entry_source, entry_binary]))
104+
self.assertEqual(entry_source, pick_source_package([entry_binary, entry_source]))

0 commit comments

Comments
 (0)