Skip to content

Commit b47fde7

Browse files
committed
Add integration test and logic to include dataset parameters in runner responses
- Implemented new test to validate `datasets.parameters` in `listRunners` API response. - Updated `RunnerService` to populate dataset parameters for runners. - Extended assertions in integration tests for dataset parameter validation.
1 parent 9f72e07 commit b47fde7

File tree

3 files changed

+70
-1
lines changed

3 files changed

+70
-1
lines changed

api/src/integrationTest/kotlin/com/cosmotech/api/home/runner/RunnerControllerTests.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,10 @@ class RunnerControllerTests : ControllerTestBase() {
479479
.andExpect(jsonPath("$[0].security.default").value(ROLE_NONE))
480480
.andExpect(jsonPath("$[0].security.accessControlList[0].role").value(ROLE_ADMIN))
481481
.andExpect(jsonPath("$[0].security.accessControlList[0].id").value(PLATFORM_ADMIN_EMAIL))
482+
.andExpect(jsonPath("$[0].datasets.parameters[0].name").value(solutionParameterId2))
483+
.andExpect(jsonPath("$[0].datasets.parameters[0].sourceName").value(TEST_FILE_NAME))
484+
.andExpect(
485+
jsonPath("$[0].datasets.parameters[0].type").value(DatasetPartTypeEnum.File.name))
482486
.andExpect(jsonPath("$[1].id").value(secondRunnerId))
483487
.andExpect(jsonPath("$[1].name").value(secondRunnerName))
484488
.andExpect(jsonPath("$[1].createInfo.userId").value(PLATFORM_ADMIN_EMAIL))
@@ -487,6 +491,10 @@ class RunnerControllerTests : ControllerTestBase() {
487491
.andExpect(jsonPath("$[1].security.default").value(ROLE_NONE))
488492
.andExpect(jsonPath("$[1].security.accessControlList[0].role").value(ROLE_ADMIN))
489493
.andExpect(jsonPath("$[1].security.accessControlList[0].id").value(PLATFORM_ADMIN_EMAIL))
494+
.andExpect(jsonPath("$[1].datasets.parameters[0].name").value(solutionParameterId2))
495+
.andExpect(jsonPath("$[1].datasets.parameters[0].sourceName").value(TEST_FILE_NAME))
496+
.andExpect(
497+
jsonPath("$[1].datasets.parameters[0].type").value(DatasetPartTypeEnum.File.name))
490498
.andDo(MockMvcResultHandlers.print())
491499
.andDo(document("organizations/{organization_id}/workspaces/{workspace_id}/runners/GET"))
492500
}

runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceIntegrationTest.kt

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ import org.springframework.beans.factory.annotation.Autowired
7575
import org.springframework.boot.test.context.SpringBootTest
7676
import org.springframework.core.io.InputStreamResource
7777
import org.springframework.core.io.ResourceLoader
78+
import org.springframework.http.MediaType
7879
import org.springframework.mock.web.MockMultipartFile
7980
import org.springframework.test.context.ActiveProfiles
8081
import org.springframework.test.context.junit.jupiter.SpringExtension
@@ -348,6 +349,59 @@ class RunnerServiceIntegrationTest : CsmTestBase() {
348349
}
349350
}
350351

352+
@Test
353+
fun `test datasets_parameters is listed into listRunners response`() {
354+
val workspaceDatasetCreateRequest =
355+
makeDataset(
356+
name = "WorkspaceDataset",
357+
parts =
358+
mutableListOf(
359+
DatasetPartCreateRequest(name = "defaultPart", sourceName = "test.txt")))
360+
val workspaceDataset =
361+
datasetApiService.createDataset(
362+
organizationSaved.id,
363+
workspaceSaved.id,
364+
workspaceDatasetCreateRequest,
365+
arrayOf(
366+
MockMultipartFile(
367+
"files",
368+
"test.txt",
369+
MediaType.MULTIPART_FORM_DATA_VALUE,
370+
"test".toByteArray())))
371+
workspaceSaved =
372+
workspaceApiService.updateWorkspace(
373+
organizationSaved.id,
374+
workspaceSaved.id,
375+
WorkspaceUpdateRequest(
376+
solution =
377+
WorkspaceSolution(
378+
solutionId = solutionSaved.id,
379+
datasetId = workspaceDataset.id,
380+
defaultParameterValues =
381+
mutableMapOf("param2" to workspaceDataset.parts[0].id))))
382+
val runnerWithInheritedDatasetParameterCreateRequest =
383+
makeRunnerCreateRequest(
384+
name = "Runner_with_inherited_dataset_parameter",
385+
datasetList = mutableListOf(datasetSaved.id))
386+
val runnerWithInheritedDatasetParameter =
387+
runnerApiService.createRunner(
388+
organizationSaved.id,
389+
workspaceSaved.id,
390+
runnerWithInheritedDatasetParameterCreateRequest)
391+
392+
val runnerList =
393+
runnerApiService.listRunners(organizationSaved.id, workspaceSaved.id, null, null)
394+
assertEquals(3, runnerList.size)
395+
396+
val runnerFromList = runnerList.firstOrNull { it.id == runnerWithInheritedDatasetParameter.id }
397+
assertNotNull(runnerFromList)
398+
val runnerDatasetParameters = runnerFromList.datasets.parameters as MutableList<DatasetPart>
399+
assertNotNull(runnerDatasetParameters)
400+
assertEquals(1, runnerDatasetParameters.size)
401+
assertEquals("test.txt", runnerDatasetParameters[0].sourceName)
402+
assertEquals("param2", runnerDatasetParameters[0].name)
403+
}
404+
351405
@Test
352406
fun `test find All Runners with different pagination params`() {
353407
val numberOfRunners = 20
@@ -2190,8 +2244,9 @@ class RunnerServiceIntegrationTest : CsmTestBase() {
21902244

21912245
fun makeDataset(
21922246
name: String = "name",
2247+
parts: MutableList<DatasetPartCreateRequest> = mutableListOf(),
21932248
): DatasetCreateRequest {
2194-
return DatasetCreateRequest(name)
2249+
return DatasetCreateRequest(name = name, parts = parts)
21952250
}
21962251

21972252
fun makeSolution(organizationId: String = organizationSaved.id): SolutionCreateRequest {

runner/src/main/kotlin/com/cosmotech/runner/service/RunnerService.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,12 @@ class RunnerService(
242242
.toList()
243243
}
244244
runners.forEach { it.security = updateSecurityVisibility(it).security }
245+
runners.forEach { runner ->
246+
val listDatasetParts =
247+
datasetApiService.listDatasetParts(
248+
organization!!.id, workspace!!.id, runner.datasets.parameter, null, null)
249+
runner.apply { datasets.parameters = listDatasetParts as MutableList<Any>? }
250+
}
245251
return runners
246252
}
247253

0 commit comments

Comments
 (0)