|
46 | 46 |
|
47 | 47 | from scancodeio import __version__ as scancodeio_version
|
48 | 48 | from scanpipe.models import CodebaseResource
|
| 49 | +from scanpipe.models import DiscoveredDependency |
49 | 50 | from scanpipe.models import DiscoveredPackage
|
50 | 51 | from scanpipe.models import Project
|
51 | 52 | from scanpipe.models import ProjectError
|
|
57 | 58 | from scanpipe.pipes.input import copy_inputs
|
58 | 59 | from scanpipe.tests import license_policies_index
|
59 | 60 | from scanpipe.tests import mocked_now
|
| 61 | +from scanpipe.tests import dependency_data1 |
60 | 62 | from scanpipe.tests import package_data1
|
61 | 63 | from scanpipe.tests.pipelines.do_nothing import DoNothing
|
62 | 64 |
|
@@ -1416,6 +1418,37 @@ def test_scanpipe_discovered_package_model_create_from_data(self):
|
1416 | 1418 | self.assertEqual(package_count, DiscoveredPackage.objects.count())
|
1417 | 1419 | self.assertEqual(project_error_count, ProjectError.objects.count())
|
1418 | 1420 |
|
| 1421 | + @skipIf(connection.vendor == "sqlite", "No max_length constraints on SQLite.") |
| 1422 | + def test_scanpipe_discovered_dependency_model_create_from_data(self): |
| 1423 | + project1 = Project.objects.create(name="Analysis") |
| 1424 | + |
| 1425 | + dependency = DiscoveredDependency.create_from_data(project1, dependency_data1) |
| 1426 | + self.assertEqual(project1, dependency.project) |
| 1427 | + self.assertEqual("pkg:pypi/dask", dependency.purl) |
| 1428 | + self.assertEqual("dask<2023.0.0,>=2022.6.0", dependency.extracted_requirement) |
| 1429 | + self.assertEqual("install", dependency.scope) |
| 1430 | + self.assertTrue(dependency.is_runtime) |
| 1431 | + self.assertFalse(dependency.is_optional) |
| 1432 | + self.assertFalse(dependency.is_resolved) |
| 1433 | + self.assertEqual("pkg:pypi/dask?uuid=e656b571-7d3f-46d1-b95b-8f037aef9692", dependency.dependency_uid) |
| 1434 | + self. assertEqual( "pkg:pypi/[email protected]?uuid=4d1f048b-a155-4f95-8cf9-185ab872ab4c", dependency. for_package_uid) |
| 1435 | + self.assertEqual("daglib-0.3.2.tar.gz-extract/daglib-0.3.2/PKG-INFO", dependency.datafile_path) |
| 1436 | + self.assertEqual("pypi_sdist_pkginfo", dependency.datasource_id) |
| 1437 | + |
| 1438 | + dependency_count = DiscoveredDependency.objects.count() |
| 1439 | + incomplete_data = dict(dependency_data1) |
| 1440 | + incomplete_data["dependency_uid"] = "" |
| 1441 | + self.assertIsNone(DiscoveredDependency.create_from_data(project1, incomplete_data)) |
| 1442 | + self.assertEqual(dependency_count, DiscoveredDependency.objects.count()) |
| 1443 | + error = project1.projecterrors.latest("created_date") |
| 1444 | + self.assertEqual("DiscoveredDependency", error.model) |
| 1445 | + expected_message = "No values for the following required fields: dependency_uid" |
| 1446 | + self.assertEqual(expected_message, error.message) |
| 1447 | + self.assertEqual(dependency_data1["purl"], error.details["purl"]) |
| 1448 | + self.assertEqual("", error.details["dependency_uid"]) |
| 1449 | + self.assertEqual("", error.traceback) |
| 1450 | + |
| 1451 | + |
1419 | 1452 | def test_scanpipe_discovered_package_model_unique_package_uid_in_project(self):
|
1420 | 1453 | project1 = Project.objects.create(name="Analysis")
|
1421 | 1454 |
|
|
0 commit comments