diff --git a/ee/app/services/vulnerabilities/archival/restoration/restore_batch_service.rb b/ee/app/services/vulnerabilities/archival/restoration/restore_batch_service.rb index bae95d59659d06fbba95e871d49cbc038b229db4..c8fb1922b5598017dc0b7396563a1cf8ab5024ce 100644 --- a/ee/app/services/vulnerabilities/archival/restoration/restore_batch_service.rb +++ b/ee/app/services/vulnerabilities/archival/restoration/restore_batch_service.rb @@ -63,6 +63,7 @@ def restore restore_records_scoped_to_findings restore_records_scoped_to_vulnerabilities adjust_vulnerability_reads_attributes + restore_with_on_the_fly_computations remove_archived_records end @@ -123,6 +124,10 @@ def restored_vulnerability_ids vulnerability_backups_to_restore.map(&:original_record_identifier) end + def restore_with_on_the_fly_computations + ::Vulnerabilities::Findings::RiskScoreCalculationService.new(restored_vulnerability_ids).execute + end + def vulnerability_backups_to_restore @vulnerability_backups_to_restore ||= vulnerability_backups.select do |backup| backup.data['finding_id'].in?(restored_finding_ids) diff --git a/ee/spec/services/vulnerabilities/archival/restoration/restore_for_group_service_spec.rb b/ee/spec/services/vulnerabilities/archival/restoration/restore_for_group_service_spec.rb index 343169128391f54636c6ca123c52979635acc93a..0a600b8527b3c537b853a9d92e12cb8fdd24f33d 100644 --- a/ee/spec/services/vulnerabilities/archival/restoration/restore_for_group_service_spec.rb +++ b/ee/spec/services/vulnerabilities/archival/restoration/restore_for_group_service_spec.rb @@ -22,6 +22,7 @@ let!(:user_mention) { create_with_project(:vulnerability_user_mention, vulnerability: vulnerability) } let!(:identifier) { create_with_project(:vulnerabilities_finding_identifier, finding: finding) } let!(:vulnerability_read) { vulnerability.vulnerability_read } + let!(:risk_score) { create(:vulnerability_finding_risk_score, finding: finding) } let(:previous_traversal_ids_value) { project.namespace.traversal_ids } before do @@ -69,6 +70,7 @@ .and change { Vulnerabilities::StateTransition.count }.by(1) .and change { VulnerabilityUserMention.count }.by(1) .and change { Vulnerabilities::Read.count }.by(1) + .and change { Vulnerabilities::FindingRiskScore.count }.by(1) end it 'deletes the backups' do @@ -108,6 +110,7 @@ state_transition.reload user_mention.reload vulnerability_read.reload + risk_score.reload end.to not_change { finding.as_json } .and not_change { vulnerability.as_json(except: :updated_at) } .and not_change { identifier.as_json } @@ -123,6 +126,7 @@ .and not_change { state_transition.as_json } .and not_change { user_mention.as_json } .and not_change { vulnerability_read.as_json } + .and not_change { risk_score.as_json(except: [:created_at, :updated_at]) } end it 'changes the `updated_at` value of vulnerabilities' do