|
9 | 9 |
|
10 | 10 | import os |
11 | 11 | import time |
| 12 | +from datetime import datetime |
| 13 | +from datetime import timezone as dt_timezone |
12 | 14 |
|
13 | 15 | import pytest |
14 | 16 | from django.test import Client |
@@ -182,6 +184,33 @@ def test_vulnerabilties_search_view_can_find_alias(self): |
182 | 184 | response = self.client.get(f"/vulnerabilities/search/?search=TEST-2022") |
183 | 185 | self.assertEqual(response.status_code, 200) |
184 | 186 |
|
| 187 | + def test_vulnerability_details_epss_uses_latest_published_score(self): |
| 188 | + older_epss = VulnerabilitySeverity.objects.create( |
| 189 | + url="https://api.first.org/data/v1/epss?cve=CVE-2024-39689", |
| 190 | + scoring_system="epss", |
| 191 | + value="0.00045", |
| 192 | + scoring_elements="0.16709", |
| 193 | + published_at=datetime(2024, 11, 1, tzinfo=dt_timezone.utc), |
| 194 | + ) |
| 195 | + latest_epss = VulnerabilitySeverity.objects.create( |
| 196 | + url="https://api.first.org/data/v1/epss?cve=CVE-2024-39689", |
| 197 | + scoring_system="epss", |
| 198 | + value="0.21233", |
| 199 | + scoring_elements="0.95432", |
| 200 | + published_at=datetime(2025, 8, 14, tzinfo=dt_timezone.utc), |
| 201 | + ) |
| 202 | + |
| 203 | + self.vulnerability.severities.add(older_epss) |
| 204 | + self.vulnerability.severities.add(latest_epss) |
| 205 | + |
| 206 | + response = self.client.get(f"/vulnerabilities/{self.vulnerability.vulnerability_id}") |
| 207 | + self.assertEqual(response.status_code, 200) |
| 208 | + |
| 209 | + epss_data = response.context["epss_data"] |
| 210 | + self.assertEqual(epss_data["score"], "0.21233") |
| 211 | + self.assertEqual(epss_data["percentile"], "0.95432") |
| 212 | + self.assertEqual(epss_data["published_at"], datetime(2025, 8, 14, tzinfo=dt_timezone.utc)) |
| 213 | + |
185 | 214 |
|
186 | 215 | class CheckRobotsTxtTestCase(TestCase): |
187 | 216 | def test_robots_txt(self): |
|
0 commit comments