@@ -1184,3 +1184,90 @@ def test_migration_processes_malformed_aliases(self):
11841184 else :
11851185 assert adv_exists == False
11861186 assert alias_exists == False
1187+
1188+
1189+ class TestCleanVersRangeMigration (TestMigrations ):
1190+ app_name = "vulnerabilities"
1191+ migrate_from = "0124_advisoryv2_remove_malformed_aliases_and_dvisory_id"
1192+ migrate_to = "0125_clean_vers_range_without_constraints"
1193+
1194+ def setUpBeforeMigration (self , apps ):
1195+ AdvisoryV2 = apps .get_model ("vulnerabilities" , "AdvisoryV2" )
1196+ ImpactedPackage = apps .get_model ("vulnerabilities" , "ImpactedPackage" )
1197+ PackageCommitPatch = apps .get_model ("vulnerabilities" , "PackageCommitPatch" )
1198+
1199+ self .advisory1 = AdvisoryV2 .objects .create (
1200+ unique_content_id = "content_id_old" ,
1201+ url = "https://old.example.com" ,
1202+ summary = "Old advisory" ,
1203+ advisory_id = "test_adv1" ,
1204+ avid = "test_pipeline/test_adv" ,
1205+ datasource_id = "test_pipeline" ,
1206+ )
1207+
1208+ self .advisory2 = AdvisoryV2 .objects .create (
1209+ unique_content_id = "content_id_old2" ,
1210+ url = "https://old.example.com" ,
1211+ summary = "Old 2 advisory" ,
1212+ advisory_id = "test_adv2" ,
1213+ avid = "test_pipeline/test_adv" ,
1214+ datasource_id = "test_pipeline" ,
1215+ )
1216+
1217+ ImpactedPackage .objects .create (
1218+ advisory = self .advisory1 ,
1219+ base_purl = "pkg:npm/foobar0" ,
1220+ affecting_vers = "vers:npm/" ,
1221+ fixed_vers = "vers:npm/" ,
1222+ )
1223+
1224+ self .impact1 = ImpactedPackage .objects .create (
1225+ advisory = self .advisory1 ,
1226+ base_purl = "pkg:npm/foobar1" ,
1227+ affecting_vers = "vers:npm/>=5.3.1|<6.0.0" ,
1228+ fixed_vers = "vers:npm/" ,
1229+ )
1230+
1231+ self .impact2 = ImpactedPackage .objects .create (
1232+ advisory = self .advisory1 ,
1233+ base_purl = "pkg:npm/foobar2" ,
1234+ affecting_vers = "vers:npm/" ,
1235+ fixed_vers = "vers:npm/" ,
1236+ )
1237+
1238+ self .pkg_commit_patch1 = PackageCommitPatch .objects .create (
1239+ commit_hash = "8c001a11dbcb3eb6d851e18f4cefa080af5fb398" ,
1240+ vcs_url = "https://github.com/aboutcode-org/test1/" ,
1241+ patch_text = "test1" ,
1242+ )
1243+
1244+ self .impact3 = ImpactedPackage .objects .create (
1245+ advisory = self .advisory2 ,
1246+ base_purl = "pkg:npm/foobar3" ,
1247+ affecting_vers = "vers:npm/>5.6.7" ,
1248+ fixed_vers = "vers:npm/5.6.8" ,
1249+ )
1250+
1251+ self .impact2 .fixed_by_package_commit_patches .add (self .pkg_commit_patch1 )
1252+
1253+ self .assertEqual (ImpactedPackage .objects .count (), 4 )
1254+
1255+ def test_empty_impactepackages_removed (self ):
1256+ ImpactedPackage = apps .get_model ("vulnerabilities" , "ImpactedPackage" )
1257+
1258+ self .assertEqual (ImpactedPackage .objects .count (), 3 )
1259+
1260+ def test_empty_fixed_vers_cleaned (self ):
1261+ self .impact1 .refresh_from_db ()
1262+ self .assertEqual (self .impact1 .fixed_vers , None )
1263+
1264+ def test_empty_affecting_vers_cleaned (self ):
1265+ self .impact2 .refresh_from_db ()
1266+ self .assertEqual (self .impact2 .affecting_vers , None )
1267+ self .assertEqual (self .impact2 .fixed_vers , None )
1268+
1269+ def test_no_change_to_valid_vers (self ):
1270+ self .impact3 .refresh_from_db ()
1271+ self .assertEqual (self .impact3 .affecting_vers , "vers:npm/>5.6.7" )
1272+ self .assertEqual (self .impact3 .fixed_vers , "vers:npm/5.6.8" )
1273+ self .assertEqual (self .impact3 .advisory .advisory_id , "test_adv2" )
0 commit comments