From e989b3246dfb951841d35ee03602a6b0b7c6028f Mon Sep 17 00:00:00 2001 From: Taewan Kim Date: Tue, 4 Jun 2024 17:23:16 +0900 Subject: [PATCH] refactor: Use LPVSFileUtil API for getReader (#535) * test: Use assertEquals to accurately verify the return value Signed-off-by: Taewan Kim * refactor: Use LPVSFileUtil API for getReader Signed-off-by: Taewan Kim * fix: Fix lint errors Signed-off-by: Taewan Kim --------- Signed-off-by: Taewan Kim --- .../scanner/LPVSScanossDetectService.java | 19 +- src/main/java/com/lpvs/util/LPVSFileUtil.java | 30 +- .../java/com/lpvs/util/LPVSFileUtilTest.java | 313 ++++++------------ 3 files changed, 122 insertions(+), 240 deletions(-) diff --git a/src/main/java/com/lpvs/service/scan/scanner/LPVSScanossDetectService.java b/src/main/java/com/lpvs/service/scan/scanner/LPVSScanossDetectService.java index 2ca23994..4122dedb 100644 --- a/src/main/java/com/lpvs/service/scan/scanner/LPVSScanossDetectService.java +++ b/src/main/java/com/lpvs/service/scan/scanner/LPVSScanossDetectService.java @@ -14,6 +14,7 @@ import com.lpvs.repository.LPVSLicenseRepository; import com.lpvs.service.LPVSLicenseService; import com.lpvs.service.scan.LPVSScanService; +import com.lpvs.util.LPVSFileUtil; import com.lpvs.util.LPVSPayloadUtil; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -244,24 +245,8 @@ private ScanossJsonStructure getScanossJsonStructure(String content, LPVSFile fi * @throws IOException If an error occurs while creating the BufferedReader object. */ private static Reader getReader(LPVSQueue webhookConfig) throws IOException { - String fileName = null; - if (webhookConfig.getHeadCommitSHA() == null - || webhookConfig.getHeadCommitSHA().isBlank()) { - fileName = LPVSPayloadUtil.getPullRequestId(webhookConfig); - } else { - fileName = webhookConfig.getHeadCommitSHA(); - } - return Files.newBufferedReader( - Paths.get( - System.getProperty("user.home") - + File.separator - + "Results" - + File.separator - + LPVSPayloadUtil.getRepositoryName(webhookConfig) - + File.separator - + fileName - + ".json")); + Paths.get(LPVSFileUtil.getScanResultsJsonFilePath(webhookConfig))); } /** diff --git a/src/main/java/com/lpvs/util/LPVSFileUtil.java b/src/main/java/com/lpvs/util/LPVSFileUtil.java index bdd645c4..a8389d9a 100644 --- a/src/main/java/com/lpvs/util/LPVSFileUtil.java +++ b/src/main/java/com/lpvs/util/LPVSFileUtil.java @@ -171,26 +171,22 @@ public static String getLocalDirectoryPath(LPVSQueue webhookConfig) { * @return The file path for storing scan results in JSON format. */ public static String getScanResultsJsonFilePath(LPVSQueue webhookConfig) { + String fileName = null; if (webhookConfig.getHeadCommitSHA() == null - || webhookConfig.getHeadCommitSHA().equals("")) { - return System.getProperty("user.home") - + File.separator - + "Results" - + File.separator - + LPVSPayloadUtil.getRepositoryName(webhookConfig) - + File.separator - + LPVSPayloadUtil.getPullRequestId(webhookConfig) - + ".json"; + || webhookConfig.getHeadCommitSHA().isBlank()) { + fileName = LPVSPayloadUtil.getPullRequestId(webhookConfig); } else { - return System.getProperty("user.home") - + File.separator - + "Results" - + File.separator - + LPVSPayloadUtil.getRepositoryName(webhookConfig) - + File.separator - + webhookConfig.getHeadCommitSHA() - + ".json"; + fileName = webhookConfig.getHeadCommitSHA(); } + + return System.getProperty("user.home") + + File.separator + + "Results" + + File.separator + + LPVSPayloadUtil.getRepositoryName(webhookConfig) + + File.separator + + fileName + + ".json"; } /** diff --git a/src/test/java/com/lpvs/util/LPVSFileUtilTest.java b/src/test/java/com/lpvs/util/LPVSFileUtilTest.java index 76878954..d79be4ac 100644 --- a/src/test/java/com/lpvs/util/LPVSFileUtilTest.java +++ b/src/test/java/com/lpvs/util/LPVSFileUtilTest.java @@ -7,11 +7,9 @@ package com.lpvs.util; import com.lpvs.entity.LPVSQueue; -import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.kohsuke.github.GHPullRequestFileDetail; -import org.mockito.MockedStatic; -import org.mockito.Mockito; import org.springframework.test.util.ReflectionTestUtils; import java.io.File; @@ -20,262 +18,129 @@ import java.util.ArrayList; import java.util.List; -import static org.mockito.Mockito.*; +import static org.junit.jupiter.api.Assertions.assertEquals; public class LPVSFileUtilTest { + private LPVSQueue webhookConfig = null; + + @BeforeEach + public void setUp() { + webhookConfig = new LPVSQueue(); + webhookConfig.setRepositoryUrl("http://test.com/test/test"); + webhookConfig.setPullRequestUrl("http://test.com/test/test/pull/123"); + } @Test public void testSaveGithubDiffs() { - GHPullRequestFileDetail detail = new GHPullRequestFileDetail(); - LPVSQueue webhookConfig = new LPVSQueue(); webhookConfig.setHeadCommitSHA("aaaa"); - webhookConfig.setRepositoryUrl("http://test.com/test/test"); + String expected = getExpectedProjectsPathWithCommitSHA(); + + GHPullRequestFileDetail detail = new GHPullRequestFileDetail(); ReflectionTestUtils.setField(detail, "filename", "I_am_a_file"); - LPVSFileUtil.saveGithubDiffs( - new ArrayList() { - { - add(detail); - } - }, - webhookConfig); ReflectionTestUtils.setField(detail, "patch", "+ a\n- b\n@@ -8,7 +8,6 @@\n c"); - Assertions.assertFalse( + assertEquals( + expected, LPVSFileUtil.saveGithubDiffs( - new ArrayList() { - { - add(detail); - } - }, - webhookConfig) - .contains("Projects//aaaa")); + new ArrayList() { + { + add(detail); + } + }, + webhookConfig)); } @Test public void testSaveGithubDiffsFileNameWithSlash() { - GHPullRequestFileDetail detail = new GHPullRequestFileDetail(); - LPVSQueue webhookConfig = new LPVSQueue(); webhookConfig.setHeadCommitSHA("aaaa"); - webhookConfig.setRepositoryUrl("http://test.com/test/test"); - ReflectionTestUtils.setField(detail, "filename", "dir/I_am_a_file"); - LPVSFileUtil.saveGithubDiffs( - new ArrayList() { - { - add(detail); - } - }, - webhookConfig); + String expected = getExpectedProjectsPathWithCommitSHA(); + GHPullRequestFileDetail detail = new GHPullRequestFileDetail(); + ReflectionTestUtils.setField(detail, "filename", "dir/I_am_a_file"); ReflectionTestUtils.setField(detail, "patch", "+ a\n- b\n@@ -8,7 +8,6 @@\n c"); - Assertions.assertFalse( + assertEquals( + expected, LPVSFileUtil.saveGithubDiffs( - new ArrayList() { - { - add(detail); - } - }, - webhookConfig) - .contains("Projects//aaaa")); + new ArrayList() { + { + add(detail); + } + }, + webhookConfig)); } @Test public void testSaveGithubDiffsEmptyPatchLines() { - GHPullRequestFileDetail detail = new GHPullRequestFileDetail(); - LPVSQueue webhookConfig = new LPVSQueue(); webhookConfig.setHeadCommitSHA("aaaa"); - webhookConfig.setRepositoryUrl("http://test.com/test/test"); + String expected = getExpectedProjectsPathWithCommitSHA(); + + GHPullRequestFileDetail detail = new GHPullRequestFileDetail(); ReflectionTestUtils.setField(detail, "filename", "I_am_a_file"); - LPVSFileUtil.saveGithubDiffs( - new ArrayList() { - { - add(detail); - } - }, - webhookConfig); ReflectionTestUtils.setField(detail, "patch", ""); - Assertions.assertFalse( + assertEquals( + expected, LPVSFileUtil.saveGithubDiffs( - new ArrayList() { - { - add(detail); - } - }, - webhookConfig) - .contains("Projects//aaaa")); + new ArrayList() { + { + add(detail); + } + }, + webhookConfig)); } @Test public void testGetLocalDirectoryPathWithHeadCommitSHA() { - LPVSQueue mockWebhookConfig = Mockito.mock(LPVSQueue.class); - Mockito.when(mockWebhookConfig.getHeadCommitSHA()).thenReturn("abcdef123"); - - try (MockedStatic mocked_static_file_util = - mockStatic(LPVSPayloadUtil.class)) { - mocked_static_file_util - .when(() -> LPVSPayloadUtil.getRepositoryName(Mockito.any())) - .thenReturn("repoName"); - - String result = LPVSFileUtil.getLocalDirectoryPath(mockWebhookConfig); - String expectedPath = - System.getProperty("user.home") - + File.separator - + "Projects" - + File.separator - + "repoName" - + File.separator - + "abcdef123"; - assert (result.equals(expectedPath)); - } + webhookConfig.setHeadCommitSHA("aaaa"); + String expected = getExpectedProjectsPathWithCommitSHA(); + + assertEquals(expected, LPVSFileUtil.getLocalDirectoryPath(webhookConfig)); } @Test public void testGetLocalDirectoryPathWithHeadCommitSHAEmpty() { - LPVSQueue mockWebhookConfig = Mockito.mock(LPVSQueue.class); - Mockito.when(mockWebhookConfig.getHeadCommitSHA()).thenReturn(""); - - try (MockedStatic mocked_static_file_util = - mockStatic(LPVSPayloadUtil.class)) { - mocked_static_file_util - .when(() -> LPVSPayloadUtil.getRepositoryName(Mockito.any())) - .thenReturn("repoName"); - mocked_static_file_util - .when(() -> LPVSPayloadUtil.getPullRequestId(Mockito.any())) - .thenReturn("1"); - - String result = LPVSFileUtil.getLocalDirectoryPath(mockWebhookConfig); - String expectedPath = - System.getProperty("user.home") - + File.separator - + "Projects" - + File.separator - + "repoName" - + File.separator - + "1"; - assert (result.equals(expectedPath)); - } + webhookConfig.setHeadCommitSHA(""); + String expected = getExpectedProjectsPathWithPullRequestId(); + + assertEquals(expected, LPVSFileUtil.getLocalDirectoryPath(webhookConfig)); } @Test public void testGetLocalDirectoryPathWithoutHeadCommitSHA() { - LPVSQueue mockWebhookConfig = Mockito.mock(LPVSQueue.class); - Mockito.when(mockWebhookConfig.getHeadCommitSHA()).thenReturn(null); - - try (MockedStatic mocked_static_file_util = - mockStatic(LPVSPayloadUtil.class)) { - mocked_static_file_util - .when(() -> LPVSPayloadUtil.getRepositoryName(Mockito.any())) - .thenReturn("repoName"); - mocked_static_file_util - .when(() -> LPVSPayloadUtil.getPullRequestId(Mockito.any())) - .thenReturn("pullRequestId"); - - String result = LPVSFileUtil.getLocalDirectoryPath(mockWebhookConfig); - String expectedPath = - System.getProperty("user.home") - + File.separator - + "Projects" - + File.separator - + "repoName" - + File.separator - + "pullRequestId"; - assert (result.equals(expectedPath)); - } + webhookConfig.setHeadCommitSHA(null); + String expected = getExpectedProjectsPathWithPullRequestId(); + + assertEquals(expected, LPVSFileUtil.getLocalDirectoryPath(webhookConfig)); } @Test public void testGetScanResultsJsonFilePathWithHeadCommitSHA() { - LPVSQueue mockWebhookConfig = Mockito.mock(LPVSQueue.class); - Mockito.when(mockWebhookConfig.getHeadCommitSHA()).thenReturn("abcdef123"); - - try (MockedStatic mocked_static_file_util = - mockStatic(LPVSPayloadUtil.class)) { - mocked_static_file_util - .when(() -> LPVSPayloadUtil.getRepositoryName(Mockito.any())) - .thenReturn("repoName"); - - String result = LPVSFileUtil.getScanResultsJsonFilePath(mockWebhookConfig); - String expectedPath = - System.getProperty("user.home") - + File.separator - + "Results" - + File.separator - + "repoName" - + File.separator - + "abcdef123.json"; - assert (result.equals(expectedPath)); - } + webhookConfig.setHeadCommitSHA("aaaa"); + String expected = getExpectedJsonFilePathWithCommitSHA(); + + assertEquals(expected, LPVSFileUtil.getScanResultsJsonFilePath(webhookConfig)); } @Test public void testGetScanResultsJsonFilePathWithHeadCommitSHAEmpty() { - LPVSQueue mockWebhookConfig = Mockito.mock(LPVSQueue.class); - Mockito.when(mockWebhookConfig.getHeadCommitSHA()).thenReturn(""); - - try (MockedStatic mocked_static_file_util = - mockStatic(LPVSPayloadUtil.class)) { - mocked_static_file_util - .when(() -> LPVSPayloadUtil.getRepositoryName(Mockito.any())) - .thenReturn("repoName"); - mocked_static_file_util - .when(() -> LPVSPayloadUtil.getPullRequestId(Mockito.any())) - .thenReturn("1"); - - String result = LPVSFileUtil.getScanResultsJsonFilePath(mockWebhookConfig); - String expectedPath = - System.getProperty("user.home") - + File.separator - + "Results" - + File.separator - + "repoName" - + File.separator - + "1.json"; - assert (result.equals(expectedPath)); - } + webhookConfig.setHeadCommitSHA(""); + String expected = getExpectedJsonFilePathWithPullRequestId(); + + assertEquals(expected, LPVSFileUtil.getScanResultsJsonFilePath(webhookConfig)); } @Test public void testGetScanResultsJsonFilePathWithoutHeadCommitSHA() { - LPVSQueue mockWebhookConfig = Mockito.mock(LPVSQueue.class); - Mockito.when(mockWebhookConfig.getHeadCommitSHA()).thenReturn(null); - - try (MockedStatic mocked_static_file_util = - mockStatic(LPVSPayloadUtil.class)) { - mocked_static_file_util - .when(() -> LPVSPayloadUtil.getRepositoryName(Mockito.any())) - .thenReturn("repoName"); - mocked_static_file_util - .when(() -> LPVSPayloadUtil.getPullRequestId(Mockito.any())) - .thenReturn("pullRequestId"); - - String result = LPVSFileUtil.getScanResultsJsonFilePath(mockWebhookConfig); - String expectedPath = - System.getProperty("user.home") - + File.separator - + "Results" - + File.separator - + "repoName" - + File.separator - + "pullRequestId.json"; - assert (result.equals(expectedPath)); - } + webhookConfig.setHeadCommitSHA(null); + String expected = getExpectedJsonFilePathWithPullRequestId(); + + assertEquals(expected, LPVSFileUtil.getScanResultsJsonFilePath(webhookConfig)); } @Test public void testGetScanResultsDirectoryPath() { - LPVSQueue mockWebhookConfig = Mockito.mock(LPVSQueue.class); - try (MockedStatic mocked_static_file_util = - mockStatic(LPVSPayloadUtil.class)) { - mocked_static_file_util - .when(() -> LPVSPayloadUtil.getRepositoryName(Mockito.any())) - .thenReturn("repoName"); - String result = LPVSFileUtil.getScanResultsDirectoryPath(mockWebhookConfig); - String expectedPath = - System.getProperty("user.home") - + File.separator - + "Results" - + File.separator - + "repoName"; - assert (result.equals(expectedPath)); - } + webhookConfig.setHeadCommitSHA("aaaa"); + String expected = getExpectedResultsPath(); + + assertEquals(expected, LPVSFileUtil.getScanResultsDirectoryPath(webhookConfig)); } @Test @@ -292,4 +157,40 @@ public void testSaveFileWithEmptyPatchedLines() { Boolean result2 = Files.exists(Paths.get(directoryPath, fileName)); assert (result2.equals(false)); } + + private static String getExpectedProjectsPathWithCommitSHA() { + return System.getProperty("user.home") + + File.separator + + "Projects" + + File.separator + + "test" + + File.separator + + "aaaa"; + } + + private static String getExpectedProjectsPathWithPullRequestId() { + return System.getProperty("user.home") + + File.separator + + "Projects" + + File.separator + + "test" + + File.separator + + "123"; + } + + private static String getExpectedResultsPath() { + return System.getProperty("user.home") + + File.separator + + "Results" + + File.separator + + "test"; + } + + private static String getExpectedJsonFilePathWithPullRequestId() { + return getExpectedResultsPath() + File.separator + "123.json"; + } + + private static String getExpectedJsonFilePathWithCommitSHA() { + return getExpectedResultsPath() + File.separator + "aaaa.json"; + } }