Skip to content

Commit cebbcd1

Browse files
committed
fix: properly calculate the direct highestVulnerability
Signed-off-by: Ruben Romero Montes <[email protected]>
1 parent a02b6d2 commit cebbcd1

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

src/main/java/com/redhat/exhort/integration/providers/ProviderResponseHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ public Source buildReportForSource(
247247
&& !depEntry.getKey().isCoordinatesEquals(recommendation.packageName())) {
248248
directReport.recommendation(recommendation.packageName());
249249
}
250-
directReport.setHighestVulnerability(issues.stream().findFirst().orElse(null));
250+
directReport.setHighestVulnerability(directReport.getIssues().stream().findFirst().orElse(null));
251251
List<TransitiveDependencyReport> transitiveReports =
252252
depEntry.getValue().transitive().stream()
253253
.map(

src/test/java/com/redhat/exhort/integration/providers/ProviderResponseHandlerTest.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,40 @@ public void testSorted() throws IOException {
209209
assertEquals("aa", reportLowest.getRef().name());
210210
assertEquals("aaa", reportLowest.getTransitive().get(0).getRef().name());
211211
assertEquals("aab", reportLowest.getTransitive().get(1).getRef().name());
212+
213+
assertEquals("ISSUE-006", reportHighest.getHighestVulnerability().getId());
214+
assertEquals("ISSUE-001", reportLowest.getHighestVulnerability().getId());
215+
}
216+
217+
@Test
218+
public void testHighestVulnerabilityInDirectDependency() throws IOException {
219+
Map<String, List<Issue>> issues = Map.of(
220+
"pkg:npm/aa@1", List.of(buildIssue(1, 4f),buildIssue(2, 9f),buildIssue(3, 1f)));
221+
ProviderResponseHandler handler = new TestResponseHandler();
222+
223+
ProviderReport response = handler.buildReport(
224+
new ProviderResponse(issues, null), buildTree(), null, EMPTY_TRUSTED_CONTENT_RESPONSE);
225+
226+
assertOkStatus(response);
227+
DependencyReport highest = getValidSource(response).getDependencies().get(0);
228+
assertEquals("ISSUE-002", highest.getHighestVulnerability().getId());
229+
assertEquals(9f, highest.getHighestVulnerability().getCvssScore());
230+
}
231+
232+
@Test
233+
public void testHighestVulnerabilityInTransitiveDependency() throws IOException {
234+
Map<String, List<Issue>> issues = Map.of(
235+
"pkg:npm/aa@1", Collections.emptyList(),
236+
"pkg:npm/aaa@1", List.of(buildIssue(1, 4f),buildIssue(2, 9f),buildIssue(3, 1f)));
237+
ProviderResponseHandler handler = new TestResponseHandler();
238+
239+
ProviderReport response = handler.buildReport(
240+
new ProviderResponse(issues, null), buildTree(), null, EMPTY_TRUSTED_CONTENT_RESPONSE);
241+
242+
assertOkStatus(response);
243+
DependencyReport highest = getValidSource(response).getDependencies().get(0);
244+
assertEquals("ISSUE-002", highest.getHighestVulnerability().getId());
245+
assertEquals(9f, highest.getHighestVulnerability().getCvssScore());
212246
}
213247

214248
@Test

0 commit comments

Comments
 (0)