Skip to content

Commit 5dbea60

Browse files
cid-3158: Remove filename when file is in the root
1 parent 59ffd77 commit 5dbea60

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

src/main/kotlin/net/leanix/githubagent/services/GitHubScanningService.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class GitHubScanningService(
2626
private val gitHubAuthenticationService: GitHubAuthenticationService,
2727
private val syncLogService: SyncLogService
2828
) {
29+
val removeFileNameRegex = Regex("/?$MANIFEST_FILE_NAME\$")
2930

3031
private val logger = LoggerFactory.getLogger(GitHubScanningService::class.java)
3132

@@ -163,7 +164,7 @@ class GitHubScanningService(
163164
numOfManifestFilesFound++
164165
syncLogService.sendInfoLog("Fetched manifest file ${manifestFile.path} from repository $repositoryName")
165166
ManifestFileDTO(
166-
path = manifestFile.path.replace("/$MANIFEST_FILE_NAME", ""),
167+
path = removeFileNameRegex.replace(manifestFile.path, ""),
167168
content = content
168169
)
169170
} else {

src/test/kotlin/net/leanix/githubagent/services/GitHubScanningServiceTest.kt

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,23 @@ package net.leanix.githubagent.services
22

33
import io.mockk.every
44
import io.mockk.mockk
5+
import io.mockk.slot
56
import io.mockk.verify
67
import net.leanix.githubagent.client.GitHubClient
78
import net.leanix.githubagent.dto.Account
89
import net.leanix.githubagent.dto.GitHubSearchResponse
910
import net.leanix.githubagent.dto.Installation
1011
import net.leanix.githubagent.dto.InstallationTokenResponse
1112
import net.leanix.githubagent.dto.ItemResponse
13+
import net.leanix.githubagent.dto.ManifestFilesDTO
1214
import net.leanix.githubagent.dto.Organization
1315
import net.leanix.githubagent.dto.PagedRepositories
1416
import net.leanix.githubagent.dto.RepositoryDto
1517
import net.leanix.githubagent.dto.RepositoryItemResponse
1618
import net.leanix.githubagent.exceptions.JwtTokenNotFound
1719
import net.leanix.githubagent.graphql.data.enums.RepositoryVisibility
20+
import net.leanix.githubagent.shared.MANIFEST_FILE_NAME
21+
import org.junit.jupiter.api.Assertions.assertEquals
1822
import org.junit.jupiter.api.BeforeEach
1923
import org.junit.jupiter.api.Test
2024
import org.junit.jupiter.api.assertThrows
@@ -163,4 +167,51 @@ class GitHubScanningServiceTest {
163167
verify { syncLogService.sendInfoLog("Finished initial full scan for organization testInstallation") }
164168
verify { syncLogService.sendInfoLog("Finished full scan for all available organizations") }
165169
}
170+
171+
@Test
172+
fun `scanGitHubResources should send manifest files with empty path if the file is in the root directory`() {
173+
// given
174+
every { cachingService.get("runId") } returns runId
175+
every { gitHubGraphQLService.getRepositories(any(), any()) } returns PagedRepositories(
176+
repositories = listOf(
177+
RepositoryDto(
178+
id = "repo1",
179+
name = "TestRepo",
180+
organizationName = "testOrg",
181+
description = "A test repository",
182+
url = "https://github.com/testRepo",
183+
archived = false,
184+
visibility = RepositoryVisibility.PUBLIC,
185+
updatedAt = "2024-01-01T00:00:00Z",
186+
languages = listOf("Kotlin", "Java"),
187+
topics = listOf("test", "example"),
188+
)
189+
),
190+
hasNextPage = false,
191+
cursor = null
192+
)
193+
every { gitHubClient.searchManifestFiles(any(), any()) } returns GitHubSearchResponse(
194+
1,
195+
listOf(
196+
ItemResponse(
197+
name = "leanix.yaml",
198+
path = MANIFEST_FILE_NAME,
199+
repository = RepositoryItemResponse(
200+
name = "TestRepo",
201+
fullName = "testOrg/TestRepo"
202+
),
203+
url = "http://url"
204+
)
205+
)
206+
)
207+
every { gitHubGraphQLService.getManifestFileContent(any(), any(), MANIFEST_FILE_NAME, any()) } returns "content"
208+
val fileSlot = slot<ManifestFilesDTO>()
209+
210+
// when
211+
gitHubScanningService.scanGitHubResources()
212+
213+
// then
214+
verify { webSocketService.sendMessage(eq("$runId/manifestFiles"), capture(fileSlot)) }
215+
assertEquals(fileSlot.captured.manifestFiles[0].path, "")
216+
}
166217
}

0 commit comments

Comments
 (0)