|
15 | 15 | from django.contrib.contenttypes.models import ContentType |
16 | 16 | from django.core.files.base import ContentFile |
17 | 17 | from django.core.files.uploadedfile import SimpleUploadedFile |
| 18 | +from django.db import IntegrityError |
18 | 19 | from django.shortcuts import resolve_url |
19 | 20 | from django.test import TestCase |
20 | 21 | from django.test.utils import override_settings |
@@ -3384,6 +3385,7 @@ def test_product_portfolio_scancodeio_project_download_input_view(self): |
3384 | 3385 | response = self.client.get(download_url) |
3385 | 3386 | self.assertEqual(response.status_code, 404) |
3386 | 3387 |
|
| 3388 | + # HERE! |
3387 | 3389 | @mock.patch("product_portfolio.models.Product.improve_packages_from_purldb") |
3388 | 3390 | def test_product_portfolio_improve_packages_from_purldb_task(self, mock_improve): |
3389 | 3391 | mock_improve.return_value = ["pkg1", "pkg2"] |
@@ -3431,6 +3433,27 @@ def test_product_portfolio_improve_packages_from_purldb_task(self, mock_improve) |
3431 | 3433 | self.assertEqual("dejacodeuser", notification.actor_content_type.model) |
3432 | 3434 | self.assertEqual(self.product1, notification.action_object) |
3433 | 3435 |
|
| 3436 | + @mock.patch("product_portfolio.models.Product.improve_packages_from_purldb") |
| 3437 | + def test_product_portfolio_improve_packages_from_purldb_task_exception(self, mock_improve): |
| 3438 | + mock_improve.side_effect = IntegrityError("duplicate key value violates unique constraint") |
| 3439 | + |
| 3440 | + self.assertFalse(self.basic_user.has_perm("change_product", self.product1)) |
| 3441 | + with self.assertLogs(tasks_logger) as cm: |
| 3442 | + results = improve_packages_from_purldb(self.product1.uuid, self.super_user.uuid) |
| 3443 | + self.assertIsNone(results) |
| 3444 | + |
| 3445 | + import_project = self.product1.scancodeprojects.get() |
| 3446 | + self.assertEqual(import_project.type, ScanCodeProject.ProjectType.IMPROVE_FROM_PURLDB) |
| 3447 | + self.assertEqual(import_project.status, ScanCodeProject.Status.FAILURE) |
| 3448 | + expected = ["Error:", "duplicate key value violates unique constraint"] |
| 3449 | + self.assertEqual(expected, import_project.import_log) |
| 3450 | + |
| 3451 | + expected = ( |
| 3452 | + "ERROR:dje.tasks:[improve_packages_from_purldb]: " |
| 3453 | + "duplicate key value violates unique constraint." |
| 3454 | + ) |
| 3455 | + self.assertIn(expected, cm.output) |
| 3456 | + |
3434 | 3457 | def test_product_portfolio_vulnerability_analysis_form_view(self): |
3435 | 3458 | self.client.login(username=self.super_user.username, password="secret") |
3436 | 3459 |
|
|
0 commit comments