|
30 | 30 | import requests |
31 | 31 | from requests import auth as request_auth |
32 | 32 |
|
| 33 | +from scanpipe.models import Project |
33 | 34 | from scanpipe.pipes import fetch |
34 | 35 | from scanpipe.tests import make_mock_response |
35 | 36 |
|
@@ -351,3 +352,38 @@ def test_scanpipe_pipes_fetch_check_urls_availability( |
351 | 352 | # All URLs fail |
352 | 353 | mock_head.side_effect = requests.exceptions.RequestException |
353 | 354 | self.assertEqual(http_urls, fetch.check_urls_availability(urls)) |
| 355 | + |
| 356 | + def test_scanpipe_pipes_fetch_set_project_purl_from_input_url(self): |
| 357 | + project = Project.objects.create(name="purl_from_url") |
| 358 | + |
| 359 | + # Single resolvable HTTP URL -> purl auto-filled |
| 360 | + fetch.set_project_purl_from_input_url( |
| 361 | + project, ["https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"] |
| 362 | + ) |
| 363 | + project.refresh_from_db() |
| 364 | + self.assertEqual("pkg:npm/lodash@4.17.21", project.purl) |
| 365 | + |
| 366 | + # Existing purl is not overwritten |
| 367 | + fetch.set_project_purl_from_input_url( |
| 368 | + project, ["https://registry.npmjs.org/react/-/react-18.0.0.tgz"] |
| 369 | + ) |
| 370 | + project.refresh_from_db() |
| 371 | + self.assertEqual("pkg:npm/lodash@4.17.21", project.purl) |
| 372 | + |
| 373 | + # Multiple URLs -> purl not set |
| 374 | + project2 = Project.objects.create(name="purl_from_url2") |
| 375 | + fetch.set_project_purl_from_input_url( |
| 376 | + project2, |
| 377 | + [ |
| 378 | + "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", |
| 379 | + "https://registry.npmjs.org/react/-/react-18.0.0.tgz", |
| 380 | + ], |
| 381 | + ) |
| 382 | + project2.refresh_from_db() |
| 383 | + self.assertEqual("", project2.purl) |
| 384 | + |
| 385 | + # Bad input -> no crash, no purl set |
| 386 | + project3 = Project.objects.create(name="purl_from_url3") |
| 387 | + fetch.set_project_purl_from_input_url(project3, ["not-a-url"]) |
| 388 | + project3.refresh_from_db() |
| 389 | + self.assertEqual("", project3.purl) |
0 commit comments