@@ -507,6 +507,52 @@ def test_dependency_files_skips_unknown_manifest(self):
507507 report = Messages .create_security_comment_gitlab (diff )
508508 assert report ["dependency_files" ] == []
509509
510+ def test_unchanged_alerts_included_in_report (self ):
511+ """Test that unchanged_alerts are included alongside new_alerts in the GitLab report"""
512+ diff = Diff ()
513+ diff .id = "test-scan-id"
514+ diff .diff_url = "https://socket.dev/test"
515+
516+ diff .new_alerts = [
517+ Issue (
518+ pkg_name = "new-pkg" , pkg_version = "1.0.0" , type = "malware" , severity = "high" ,
519+ title = "New Alert" , manifests = "package.json" , pkg_type = "npm" , key = "k1" , purl = "pkg:npm/new-pkg@1.0.0"
520+ ),
521+ ]
522+ diff .unchanged_alerts = [
523+ Issue (
524+ pkg_name = "existing-pkg" , pkg_version = "2.0.0" , type = "vulnerability" , severity = "medium" ,
525+ title = "Existing Alert" , manifests = "package.json" , pkg_type = "npm" , key = "k2" , purl = "pkg:npm/existing-pkg@2.0.0"
526+ ),
527+ ]
528+
529+ report = Messages .create_security_comment_gitlab (diff )
530+ assert len (report ["vulnerabilities" ]) == 2
531+
532+ names = {v ["name" ] for v in report ["vulnerabilities" ]}
533+ assert "New Alert" in names
534+ assert "Existing Alert" in names
535+
536+ def test_only_unchanged_alerts_produces_nonempty_report (self ):
537+ """Test that a diff with no new alerts but unchanged alerts still populates the report"""
538+ diff = Diff ()
539+ diff .id = "test-scan-id"
540+ diff .diff_url = "https://socket.dev/test"
541+
542+ diff .new_alerts = []
543+ diff .unchanged_alerts = [
544+ Issue (
545+ pkg_name = "stable-pkg" , pkg_version = "3.0.0" , type = "vulnerability" , severity = "critical" ,
546+ title = "Known Issue" , manifests = "requirements.txt" , pkg_type = "pypi" , key = "k1" , purl = "pkg:pypi/stable-pkg@3.0.0"
547+ ),
548+ ]
549+
550+ report = Messages .create_security_comment_gitlab (diff )
551+ assert len (report ["vulnerabilities" ]) == 1
552+ assert report ["vulnerabilities" ][0 ]["name" ] == "Known Issue"
553+ assert len (report ["dependency_files" ]) == 1
554+ assert report ["dependency_files" ][0 ]["path" ] == "requirements.txt"
555+
510556 def test_pkg_type_to_package_manager_mapping (self ):
511557 """Test package manager mapping covers common ecosystems"""
512558 assert Messages ._pkg_type_to_package_manager ("npm" ) == "npm"
0 commit comments