From 5dbea609f1fa10665cd4173b616bfc14c7aca707 Mon Sep 17 00:00:00 2001 From: Henrique Eduardo do Amaral Date: Tue, 5 Nov 2024 15:17:48 +0100 Subject: [PATCH 1/2] cid-3158: Remove filename when file is in the root --- .../services/GitHubScanningService.kt | 3 +- .../services/GitHubScanningServiceTest.kt | 51 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/net/leanix/githubagent/services/GitHubScanningService.kt b/src/main/kotlin/net/leanix/githubagent/services/GitHubScanningService.kt index 45554f0..8f45d9d 100644 --- a/src/main/kotlin/net/leanix/githubagent/services/GitHubScanningService.kt +++ b/src/main/kotlin/net/leanix/githubagent/services/GitHubScanningService.kt @@ -26,6 +26,7 @@ class GitHubScanningService( private val gitHubAuthenticationService: GitHubAuthenticationService, private val syncLogService: SyncLogService ) { + val removeFileNameRegex = Regex("/?$MANIFEST_FILE_NAME\$") private val logger = LoggerFactory.getLogger(GitHubScanningService::class.java) @@ -163,7 +164,7 @@ class GitHubScanningService( numOfManifestFilesFound++ syncLogService.sendInfoLog("Fetched manifest file ${manifestFile.path} from repository $repositoryName") ManifestFileDTO( - path = manifestFile.path.replace("/$MANIFEST_FILE_NAME", ""), + path = removeFileNameRegex.replace(manifestFile.path, ""), content = content ) } else { diff --git a/src/test/kotlin/net/leanix/githubagent/services/GitHubScanningServiceTest.kt b/src/test/kotlin/net/leanix/githubagent/services/GitHubScanningServiceTest.kt index 13a37ee..befc9c7 100644 --- a/src/test/kotlin/net/leanix/githubagent/services/GitHubScanningServiceTest.kt +++ b/src/test/kotlin/net/leanix/githubagent/services/GitHubScanningServiceTest.kt @@ -2,6 +2,7 @@ package net.leanix.githubagent.services import io.mockk.every import io.mockk.mockk +import io.mockk.slot import io.mockk.verify import net.leanix.githubagent.client.GitHubClient import net.leanix.githubagent.dto.Account @@ -9,12 +10,15 @@ import net.leanix.githubagent.dto.GitHubSearchResponse import net.leanix.githubagent.dto.Installation import net.leanix.githubagent.dto.InstallationTokenResponse import net.leanix.githubagent.dto.ItemResponse +import net.leanix.githubagent.dto.ManifestFilesDTO import net.leanix.githubagent.dto.Organization import net.leanix.githubagent.dto.PagedRepositories import net.leanix.githubagent.dto.RepositoryDto import net.leanix.githubagent.dto.RepositoryItemResponse import net.leanix.githubagent.exceptions.JwtTokenNotFound import net.leanix.githubagent.graphql.data.enums.RepositoryVisibility +import net.leanix.githubagent.shared.MANIFEST_FILE_NAME +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows @@ -163,4 +167,51 @@ class GitHubScanningServiceTest { verify { syncLogService.sendInfoLog("Finished initial full scan for organization testInstallation") } verify { syncLogService.sendInfoLog("Finished full scan for all available organizations") } } + + @Test + fun `scanGitHubResources should send manifest files with empty path if the file is in the root directory`() { + // given + every { cachingService.get("runId") } returns runId + every { gitHubGraphQLService.getRepositories(any(), any()) } returns PagedRepositories( + repositories = listOf( + RepositoryDto( + id = "repo1", + name = "TestRepo", + organizationName = "testOrg", + description = "A test repository", + url = "https://github.com/testRepo", + archived = false, + visibility = RepositoryVisibility.PUBLIC, + updatedAt = "2024-01-01T00:00:00Z", + languages = listOf("Kotlin", "Java"), + topics = listOf("test", "example"), + ) + ), + hasNextPage = false, + cursor = null + ) + every { gitHubClient.searchManifestFiles(any(), any()) } returns GitHubSearchResponse( + 1, + listOf( + ItemResponse( + name = "leanix.yaml", + path = MANIFEST_FILE_NAME, + repository = RepositoryItemResponse( + name = "TestRepo", + fullName = "testOrg/TestRepo" + ), + url = "http://url" + ) + ) + ) + every { gitHubGraphQLService.getManifestFileContent(any(), any(), MANIFEST_FILE_NAME, any()) } returns "content" + val fileSlot = slot() + + // when + gitHubScanningService.scanGitHubResources() + + // then + verify { webSocketService.sendMessage(eq("$runId/manifestFiles"), capture(fileSlot)) } + assertEquals(fileSlot.captured.manifestFiles[0].path, "") + } } From 2d383efa19c3820749142f42083ec07c8ebef191 Mon Sep 17 00:00:00 2001 From: Henrique Eduardo do Amaral Date: Tue, 5 Nov 2024 15:41:59 +0100 Subject: [PATCH 2/2] cid-3158: Change regex name --- .../net/leanix/githubagent/services/GitHubScanningService.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/net/leanix/githubagent/services/GitHubScanningService.kt b/src/main/kotlin/net/leanix/githubagent/services/GitHubScanningService.kt index 8f45d9d..edea8fe 100644 --- a/src/main/kotlin/net/leanix/githubagent/services/GitHubScanningService.kt +++ b/src/main/kotlin/net/leanix/githubagent/services/GitHubScanningService.kt @@ -26,7 +26,7 @@ class GitHubScanningService( private val gitHubAuthenticationService: GitHubAuthenticationService, private val syncLogService: SyncLogService ) { - val removeFileNameRegex = Regex("/?$MANIFEST_FILE_NAME\$") + val fileNameMatchRegex = Regex("/?$MANIFEST_FILE_NAME\$") private val logger = LoggerFactory.getLogger(GitHubScanningService::class.java) @@ -164,7 +164,7 @@ class GitHubScanningService( numOfManifestFilesFound++ syncLogService.sendInfoLog("Fetched manifest file ${manifestFile.path} from repository $repositoryName") ManifestFileDTO( - path = removeFileNameRegex.replace(manifestFile.path, ""), + path = fileNameMatchRegex.replace(manifestFile.path, ""), content = content ) } else {