aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHavoc Pennington <havoc.pennington@sonarsource.com>2025-03-17 10:11:07 -0400
committerMatteo Mara <matteo.mara@sonarsource.com>2025-03-17 22:23:55 +0100
commit612f019332738ecf03f4a027ec5cc244175016cc (patch)
tree65252ce6f21ddea1909473aeaf4c32f9a0742dc3
parent81d211dee70e2689d615b2a8595b51317f425437 (diff)
downloadsonarqube-612f019332738ecf03f4a027ec5cc244175016cc.tar.gz
sonarqube-612f019332738ecf03f4a027ec5cc244175016cc.zip
SCA-137 de-duplicate release ids in searching for issues-releases (#13196)
-rw-r--r--server/sonar-db-dao/src/testFixtures/java/org/sonar/db/sca/ScaIssuesReleasesDetailsDbTester.java29
1 files changed, 19 insertions, 10 deletions
diff --git a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/sca/ScaIssuesReleasesDetailsDbTester.java b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/sca/ScaIssuesReleasesDetailsDbTester.java
index 8089338c53f..869a62e61a2 100644
--- a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/sca/ScaIssuesReleasesDetailsDbTester.java
+++ b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/sca/ScaIssuesReleasesDetailsDbTester.java
@@ -21,9 +21,12 @@ package org.sonar.db.sca;
import java.util.Optional;
import java.util.function.Function;
+import javax.annotation.Nullable;
import org.sonar.db.DbClient;
import org.sonar.db.DbTester;
+import static org.assertj.core.api.Assertions.assertThat;
+
public class ScaIssuesReleasesDetailsDbTester {
private final DbTester db;
private final DbClient dbClient;
@@ -73,18 +76,24 @@ public class ScaIssuesReleasesDetailsDbTester {
}
public ScaIssueReleaseDetailsDto insertIssue(ScaIssueType scaIssueType, String suffix, String componentUuid,
- Function<ScaIssueDto, ScaIssueDto> scaIssueModifier,
- Function<ScaVulnerabilityIssueDto, ScaVulnerabilityIssueDto> scaVulnerabilityIssueModifier,
- Function<ScaReleaseDto, ScaReleaseDto> scaReleaseModifier,
- Function<ScaIssueReleaseDto, ScaIssueReleaseDto> scaIssueReleaseModifier) {
- var scaRelease = db.getScaReleasesDbTester().newScaReleaseDto(componentUuid, suffix, PackageManager.MAVEN, "packageName" + suffix);
- if (scaIssueModifier != null) {
+ @Nullable Function<ScaIssueDto, ScaIssueDto> scaIssueModifier,
+ @Nullable Function<ScaVulnerabilityIssueDto, ScaVulnerabilityIssueDto> scaVulnerabilityIssueModifier,
+ @Nullable Function<ScaReleaseDto, ScaReleaseDto> scaReleaseModifier,
+ @Nullable Function<ScaIssueReleaseDto, ScaIssueReleaseDto> scaIssueReleaseModifier) {
+ var scaRelease = ScaReleasesDbTester.newScaReleaseDto(componentUuid, suffix, PackageManager.MAVEN, "packageName" + suffix);
+ if (scaReleaseModifier != null) {
scaRelease = scaReleaseModifier.apply(scaRelease);
}
- dbClient.scaReleasesDao().insert(db.getSession(), scaRelease);
+ // little hack here because it's useful to allow providing a release that already exists
+ var existing = dbClient.scaReleasesDao().selectByUuid(db.getSession(), scaRelease.uuid());
+ if (existing.isEmpty()) {
+ dbClient.scaReleasesDao().insert(db.getSession(), scaRelease);
+ } else {
+ assertThat(existing).contains(scaRelease);
+ }
var scaIssue = switch (scaIssueType) {
- case PROHIBITED_LICENSE -> db.getScaIssuesDbTester().newProhibitedLicenseScaIssueDto(suffix);
- case VULNERABILITY -> db.getScaIssuesDbTester().newVulnerabilityScaIssueDto(suffix);
+ case PROHIBITED_LICENSE -> ScaIssuesDbTester.newProhibitedLicenseScaIssueDto(suffix);
+ case VULNERABILITY -> ScaIssuesDbTester.newVulnerabilityScaIssueDto(suffix);
};
if (scaIssueModifier != null) {
scaIssue = scaIssueModifier.apply(scaIssue);
@@ -92,7 +101,7 @@ public class ScaIssuesReleasesDetailsDbTester {
dbClient.scaIssuesDao().insert(db.getSession(), scaIssue);
ScaVulnerabilityIssueDto scaVulnerabilityIssue = null;
if (scaIssue.scaIssueType() == ScaIssueType.VULNERABILITY) {
- scaVulnerabilityIssue = db.getScaIssuesDbTester().newVulnerabilityIssueDto(suffix);
+ scaVulnerabilityIssue = ScaIssuesDbTester.newVulnerabilityIssueDto(suffix);
if (!scaVulnerabilityIssue.uuid().equals(scaIssue.uuid())) {
throw new IllegalStateException("ScaVulnerabilityIssueDto.uuid must match ScaIssueDto.uuid or we won't find the ScaVueberabilityIssueDto");
}