diff options
author | Javier García Orduña <javier.garcia@sonarsource.com> | 2024-12-06 13:09:31 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2024-12-06 20:03:27 +0000 |
commit | dd2762c9eabce3ece8aedf71db4d78b4153bb8bd (patch) | |
tree | ee2da45cd207c0306037b413772b979ad79dfd2c /sonar-scanner-engine/src/test/java/org/sonar | |
parent | 00268b5200a6f329e14e3e6b910768cf454cd64c (diff) | |
download | sonarqube-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.java | 36 |
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)) |