aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-webserver-webapi
diff options
context:
space:
mode:
authorMatteo Mara <matteo.mara@sonarsource.com>2025-03-24 12:10:07 +0100
committersonartech <sonartech@sonarsource.com>2025-03-24 20:03:14 +0000
commitd767fd46800a6e76721d7e5fdbd0c067c490f200 (patch)
tree858bec58dbd74087e37884709a0e82b741cffbd1 /server/sonar-webserver-webapi
parentda2422cc12a07d4373c2ccfd4eb6f3e7f24e5214 (diff)
downloadsonarqube-master.tar.gz
sonarqube-master.zip
SONAR-24688 allow /api/hotspots/pull endpoint to return hotspots not assigned to a file.HEADmaster
Diffstat (limited to 'server/sonar-webserver-webapi')
-rw-r--r--server/sonar-webserver-webapi/src/main/java/org/sonar/server/hotspot/ws/PullHotspotsActionProtobufObjectGenerator.java5
-rw-r--r--server/sonar-webserver-webapi/src/test/java/org/sonar/server/hotspot/ws/PullHotspotsActionProtobufObjectGeneratorTest.java27
2 files changed, 31 insertions, 1 deletions
diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/hotspot/ws/PullHotspotsActionProtobufObjectGenerator.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/hotspot/ws/PullHotspotsActionProtobufObjectGenerator.java
index f61dc86b5c4..e87271575f7 100644
--- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/hotspot/ws/PullHotspotsActionProtobufObjectGenerator.java
+++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/hotspot/ws/PullHotspotsActionProtobufObjectGenerator.java
@@ -43,12 +43,15 @@ public class PullHotspotsActionProtobufObjectGenerator implements ProtobufObject
public Hotspots.HotspotLite generateIssueMessage(IssueDto hotspotDto, RuleDto ruleDto) {
Hotspots.HotspotLite.Builder builder = Hotspots.HotspotLite.newBuilder()
.setKey(hotspotDto.getKey())
- .setFilePath(hotspotDto.getFilePath())
.setStatus(hotspotDto.getStatus())
.setRuleKey(hotspotDto.getRuleKey().toString())
.setStatus(hotspotDto.getStatus())
.setVulnerabilityProbability(getVulnerabilityProbability(ruleDto));
+ if (hotspotDto.getFilePath() != null) {
+ builder.setFilePath(hotspotDto.getFilePath());
+ }
+
if (hotspotDto.getIssueCreationTime() != null) {
builder.setCreationDate(hotspotDto.getIssueCreationTime());
}
diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/hotspot/ws/PullHotspotsActionProtobufObjectGeneratorTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/hotspot/ws/PullHotspotsActionProtobufObjectGeneratorTest.java
index 290be53f4ae..011496672ff 100644
--- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/hotspot/ws/PullHotspotsActionProtobufObjectGeneratorTest.java
+++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/hotspot/ws/PullHotspotsActionProtobufObjectGeneratorTest.java
@@ -31,6 +31,7 @@ import org.sonarqube.ws.Hotspots.HotspotLite;
import org.sonarqube.ws.Hotspots.HotspotPullQueryTimestamp;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
public class PullHotspotsActionProtobufObjectGeneratorTest {
@@ -81,6 +82,32 @@ public class PullHotspotsActionProtobufObjectGeneratorTest {
}
@Test
+ public void generateIssueMessage_whenFilePathIsNull_shouldMapDtoFields() {
+ Date creationDate = new Date();
+ IssueDto issueDto = new IssueDto()
+ .setKee("key")
+ .setProjectKey("my-project-key")
+ .setStatus("REVIEWED")
+ .setResolution("FIXED")
+ .setRuleKey("repo", "rule")
+ .setRuleUuid("rule-uuid-1")
+ .setMessage("Look at me, I'm the issue now!")
+ .setAssigneeLogin("assignee-login")
+ .setIssueCreationDate(creationDate);
+
+ DbIssues.Locations locations = DbIssues.Locations.newBuilder()
+ .setTextRange(range(2, 3))
+ .build();
+ issueDto.setLocations(locations);
+
+ RuleDto ruleDto = new RuleDto()
+ .setSecurityStandards(Set.of("cwe:489,cwe:570,cwe:571"));
+
+ HotspotLite result = underTest.generateIssueMessage(issueDto, ruleDto);
+ assertEquals("", result.getFilePath());
+ }
+
+ @Test
public void generateClosedIssueMessage_shouldMapClosedHotspotFields() {
HotspotLite result = underTest.generateClosedIssueMessage("uuid");
assertThat(result).extracting(HotspotLite::getKey, HotspotLite::getClosed)