Skip to content

Commit a001a87

Browse files
committed
Add tests for data migration
Signed-off-by: Tushar Goel <[email protected]>
1 parent 9b335c4 commit a001a87

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

vulnerabilities/migrations/0037_auto_20230120_1204.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
1+
#
2+
# Copyright (c) nexB Inc. and others. All rights reserved.
3+
# VulnerableCode is a trademark of nexB Inc.
4+
# SPDX-License-Identifier: Apache-2.0
5+
# See http://www.apache.org/licenses/LICENSE-2.0 for the license text.
6+
# See https://github.com/nexB/vulnerablecode for support or download.
7+
# See https://aboutcode.org for more information about nexB OSS projects.
8+
#
9+
110
from django.db import migrations
2-
from packageurl import PackageURL
311

412
from vulnerabilities.severity_systems import SCORING_SYSTEMS
513

@@ -9,7 +17,6 @@ def remove_advisories(apps, schema_editor):
917
Advisory = apps.get_model("vulnerabilities", "Advisory")
1018
deletables = []
1119
for advisory in Advisory.objects.iterator(chunk_size=1000):
12-
print(advisory.pk)
1320
for ref in advisory.references:
1421
if not ref["url"]:
1522
deletables.append(advisory.pk)

vulnerabilities/tests/test_data_migrations.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,3 +533,38 @@ def test_merge_rows(self):
533533
]
534534

535535
assert severities == expected
536+
537+
538+
class RemoveCorrupteAdvisories(TestMigrations):
539+
app_name = "vulnerabilities"
540+
migrate_from = "0036_alter_package_package_url_and_more"
541+
migrate_to = "0037_auto_20230120_1204"
542+
543+
def setUpBeforeMigration(self, apps):
544+
# using get_model to avoid circular import
545+
Advisory = apps.get_model("vulnerabilities", "Advisory")
546+
547+
corrupted_advisory = Advisory.objects.create(
548+
aliases=["CVE-2020-1234"],
549+
summary="Corrupted advisory",
550+
references=[
551+
{
552+
"reference_id": "cpe:2.3:a:f5:nginx:1.16.1:*:*:*:*:*:*:*",
553+
"url": "",
554+
"severity": [
555+
{
556+
"scoring_system": "cvssv3_vector",
557+
"value": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
558+
}
559+
],
560+
}
561+
],
562+
date_collected="2020-01-01",
563+
date_published="2020-01-01",
564+
)
565+
corrupted_advisory.save()
566+
567+
def test_removal_of_corrupted_advisory(self):
568+
# using get_model to avoid circular import
569+
Advisory = self.apps.get_model("vulnerabilities", "Advisory")
570+
Advisory.objects.all().count() == 0

0 commit comments

Comments
 (0)