Skip to content

Commit 03c21a8

Browse files
Add unittests for new functions
Signed-off-by: Ayan Sinha Mahapatra <ayansmahapatra@gmail.com>
1 parent 930b66c commit 03c21a8

3 files changed

Lines changed: 70 additions & 1 deletion

File tree

scanpipe/pipes/resolve.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"""
4545

4646

47-
def get_packages(project, package_registry, manifest_resources, model):
47+
def get_packages(project, package_registry, manifest_resources, model=None):
4848
"""
4949
Get package data from package manifests/lockfiles/SBOMs or
5050
get package data for resolved packages from package requirements.

scanpipe/tests/pipes/test_resolve.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
from scanpipe import pipes
2828
from scanpipe.models import Project
2929
from scanpipe.pipes import resolve
30+
from scanpipe.pipes.input import copy_inputs
31+
from scanpipe.pipes.scancode import extract_archives
3032
from scanpipe.tests import package_data1
3133

3234

@@ -154,3 +156,58 @@ def test_scanpipe_pipes_resolve_spdx_package_to_discovered_package_data(self):
154156
"md5": "76cf50f29e47676962645632737365a7",
155157
}
156158
self.assertEqual(expected, package_data)
159+
160+
def test_scanpipe_resolve_get_manifest_resources(self):
161+
project1 = Project.objects.create(name="Analysis")
162+
input_location = (
163+
self.data_location / "manifests" / "python-inspector-0.10.0.zip"
164+
)
165+
project1.copy_input_from(input_location)
166+
copy_inputs(project1.inputs(), project1.codebase_path)
167+
168+
extract_archives(project1.codebase_path, recurse=True)
169+
pipes.collect_and_create_codebase_resources(project1)
170+
171+
resources = resolve.get_manifest_resources(project1)
172+
self.assertTrue(resources.exists())
173+
requirements_resource = project1.codebaseresources.get(
174+
path=(
175+
"python-inspector-0.10.0.zip-extract/"
176+
"python-inspector-0.10.0/requirements.txt"
177+
)
178+
)
179+
self.assertIn(requirements_resource, resources)
180+
181+
def test_scanpipe_resolve_get_packages_from_sbom(self):
182+
project1 = Project.objects.create(name="Analysis")
183+
input_location = self.data_location / "manifests" / "toml.spdx.json"
184+
185+
project1.copy_input_from(input_location)
186+
copy_inputs(project1.inputs(), project1.codebase_path)
187+
pipes.collect_and_create_codebase_resources(project1)
188+
resources = resolve.get_manifest_resources(project1)
189+
190+
packages = resolve.get_packages(
191+
project1,
192+
resolve.sbom_registry,
193+
resources,
194+
)
195+
self.assertEqual(1, len(packages))
196+
self.assertEqual("toml", packages[0]["name"])
197+
198+
def test_scanpipe_resolve_create_packages_and_dependencies(self):
199+
project1 = Project.objects.create(name="Analysis")
200+
input_location = self.data_location / "manifests" / "toml.spdx.json"
201+
202+
project1.copy_input_from(input_location)
203+
copy_inputs(project1.inputs(), project1.codebase_path)
204+
pipes.collect_and_create_codebase_resources(project1)
205+
resources = resolve.get_manifest_resources(project1)
206+
packages = resolve.get_packages(
207+
project1,
208+
resolve.sbom_registry,
209+
resources,
210+
)
211+
resolve.create_packages_and_dependencies(project1, packages)
212+
self.assertEqual(1, project1.discoveredpackages.count())
213+
self.assertEqual(0, project1.discovereddependencies.count())

scanpipe/tests/pipes/test_scancode.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
from scanpipe.models import DiscoveredDependency
4141
from scanpipe.models import DiscoveredPackage
4242
from scanpipe.models import Project
43+
from scanpipe.pipes import collect_and_create_codebase_resources
4344
from scanpipe.pipes import input
4445
from scanpipe.pipes import scancode
4546
from scanpipe.pipes.input import copy_input
@@ -542,3 +543,14 @@ def test_scanpipe_pipes_scancode_get_detection_data(self):
542543

543544
results = scancode.get_detection_data(detection_entry)
544545
self.assertEqual(expected, results)
546+
547+
def test_scanpipe_scancode_process_package_data(self):
548+
project1 = Project.objects.create(name="Utility: PurlDB")
549+
package_json_location = self.data_location / "manifests" / "package.json"
550+
copy_input(package_json_location, project1.codebase_path)
551+
collect_and_create_codebase_resources(project1)
552+
scancode.scan_for_application_packages(project1, assemble=False)
553+
scancode.process_package_data(project1)
554+
555+
self.assertEqual(1, project1.discoveredpackages.count())
556+
self.assertEqual(6, project1.discovereddependencies.count())

0 commit comments

Comments
 (0)