aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-scanner-engine/src/test/java/org/sonar
diff options
context:
space:
mode:
authorJavier García Orduña <javier.garcia@sonarsource.com>2024-12-06 13:09:31 +0100
committersonartech <sonartech@sonarsource.com>2024-12-06 20:03:27 +0000
commitdd2762c9eabce3ece8aedf71db4d78b4153bb8bd (patch)
treeee2da45cd207c0306037b413772b979ad79dfd2c /sonar-scanner-engine/src/test/java/org/sonar
parent00268b5200a6f329e14e3e6b910768cf454cd64c (diff)
downloadsonarqube-dd2762c9eabce3ece8aedf71db4d78b4153bb8bd.tar.gz
sonarqube-dd2762c9eabce3ece8aedf71db4d78b4153bb8bd.zip
SONAR-22185 SARIF issues are not imported for some location URI format
Co-authored-by: antoine.vinot <antoine.vinot@sonarsource.com>
Diffstat (limited to 'sonar-scanner-engine/src/test/java/org/sonar')
-rw-r--r--sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/LocationMapperTest.java36
1 files changed, 29 insertions, 7 deletions
diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/LocationMapperTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/LocationMapperTest.java
index c05e35429a3..cc8d96e11ad 100644
--- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/LocationMapperTest.java
+++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/externalissue/sarif/LocationMapperTest.java
@@ -19,6 +19,8 @@
*/
package org.sonar.scanner.externalissue.sarif;
+import com.tngtech.java.junit.dataprovider.DataProvider;
+import com.tngtech.java.junit.dataprovider.DataProviderRunner;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;
@@ -28,7 +30,7 @@ import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.MockitoAnnotations;
import org.sonar.api.batch.fs.FilePredicate;
import org.sonar.api.batch.fs.InputFile;
import org.sonar.api.batch.fs.TextRange;
@@ -39,13 +41,14 @@ import org.sonar.sarif.pojo.Location;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
-@RunWith(MockitoJUnitRunner.class)
+@RunWith(DataProviderRunner.class)
public class LocationMapperTest {
private static final String URI_TEST = "URI_TEST";
@@ -71,6 +74,7 @@ public class LocationMapperTest {
@Before
public void setup() {
+ MockitoAnnotations.openMocks(this);
when(newIssueLocation.on(any())).thenReturn(newIssueLocation);
when(newIssueLocation.at(any())).thenReturn(newIssueLocation);
when(sensorContext.project()).thenReturn(mock(InputProject.class));
@@ -82,8 +86,7 @@ public class LocationMapperTest {
@Test
public void isPredicate_whenDifferentFile_returnsFalse() {
Path path = Paths.get("file");
- InputFile inputFile = mock(InputFile.class);
- when((inputFile.path())).thenReturn(Paths.get("file2"));
+ when(inputFile.path()).thenReturn(Paths.get("file2"));
LocationMapper.IsPredicate isPredicate = new LocationMapper.IsPredicate(path);
assertThat(isPredicate.apply(inputFile)).isFalse();
}
@@ -91,8 +94,7 @@ public class LocationMapperTest {
@Test
public void isPredicate_whenSameFile_returnsTrue() {
Path path = Paths.get("file");
- InputFile inputFile = mock(InputFile.class);
- when((inputFile.path())).thenReturn(path);
+ when(inputFile.path()).thenReturn(path);
LocationMapper.IsPredicate isPredicate = new LocationMapper.IsPredicate(path);
assertThat(isPredicate.apply(inputFile)).isTrue();
}
@@ -142,6 +144,26 @@ public class LocationMapperTest {
}
@Test
+ @DataProvider({"file:///", "file:///path/", "file://host/", "file://host/path/", "file:////server/"})
+ public void fillIssueInFileLocation_ifCorrectUriWithFileScheme_returnsTrue(String uriPrefix) {
+ when(location.getPhysicalLocation().getArtifactLocation().getUri()).thenReturn(uriPrefix + URI_TEST);
+
+ boolean success = locationMapper.fillIssueInFileLocation(newIssueLocation, location);
+
+ assertThat(success).isTrue();
+ verify(newIssueLocation).on(inputFile);
+ verifyNoMoreInteractions(newIssueLocation);
+ }
+
+ @Test
+ public void fillIssueInFileLocation_ifIncorrectUriWithFileScheme_throws() {
+ when(location.getPhysicalLocation().getArtifactLocation().getUri()).thenReturn("file://" + URI_TEST);
+
+ assertThatThrownBy(() -> locationMapper.fillIssueInFileLocation(newIssueLocation, location))
+ .hasRootCause(new IllegalArgumentException("Invalid file scheme URI: file://" + URI_TEST));
+ }
+
+ @Test
public void fillIssueInFileLocation_ifNullArtifactLocation_throws() {
when(location.getPhysicalLocation().getArtifactLocation()).thenReturn(null);
@@ -152,7 +174,7 @@ public class LocationMapperTest {
@Test
public void fillIssueInFileLocation_ifNullPhysicalLocation_throws() {
- when(location.getPhysicalLocation().getArtifactLocation()).thenReturn(null);
+ when(location.getPhysicalLocation()).thenReturn(null);
assertThatIllegalArgumentException()
.isThrownBy(() -> locationMapper.fillIssueInFileLocation(newIssueLocation, location))