Skip to content

Commit c1dc19c

Browse files
feat: removing runner from scenario won't remove him from linked main datasets
1 parent 3b1778f commit c1dc19c

File tree

3 files changed

+80
-4
lines changed

3 files changed

+80
-4
lines changed

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

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,39 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() {
581581

582582
@Test
583583
fun `test AccessControls management on Runner as ressource Admin`() {
584+
dataset = makeDataset(organizationSaved.id!!, "Dataset", connectorSaved, false)
585+
datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset)
586+
materializeTwingraph()
587+
588+
solution = makeSolution(organizationSaved.id!!)
589+
solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution)
590+
591+
workspace = makeWorkspace(organizationSaved.id!!, solutionSaved.id!!, "Workspace")
592+
workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace)
593+
594+
parentRunner =
595+
makeRunner(
596+
organizationSaved.id!!,
597+
workspaceSaved.id!!,
598+
solutionSaved.id!!,
599+
"RunnerParent",
600+
mutableListOf(datasetSaved.id!!),
601+
parametersValues = mutableListOf(runTemplateParameterValue1))
602+
603+
parentRunnerSaved =
604+
runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, parentRunner)
605+
606+
runner =
607+
makeRunner(
608+
organizationSaved.id!!,
609+
workspaceSaved.id!!,
610+
solutionSaved.id!!,
611+
name = "Runner",
612+
parentId = parentRunnerSaved.id!!,
613+
datasetList = mutableListOf(datasetSaved.id!!),
614+
parametersValues = mutableListOf(runTemplateParameterValue2))
615+
616+
runnerSaved = runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner)
584617
logger.info("should add an Access Control and assert it has been added")
585618
val runnerAccessControl = RunnerAccessControl(TEST_USER_MAIL, ROLE_VIEWER)
586619
var runnerAccessControlRegistered =
@@ -647,6 +680,41 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() {
647680

648681
@Test
649682
fun `test AccessControls management on Runner as Unauthorized User`() {
683+
684+
dataset = makeDataset(organizationSaved.id!!, "Dataset", connectorSaved, isMain = false)
685+
datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset)
686+
materializeTwingraph()
687+
688+
solution = makeSolution(organizationSaved.id!!)
689+
solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution)
690+
691+
workspace = makeWorkspace(organizationSaved.id!!, solutionSaved.id!!, "Workspace")
692+
workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace)
693+
694+
parentRunner =
695+
makeRunner(
696+
organizationSaved.id!!,
697+
workspaceSaved.id!!,
698+
solutionSaved.id!!,
699+
"RunnerParent",
700+
mutableListOf(datasetSaved.id!!),
701+
parametersValues = mutableListOf(runTemplateParameterValue1))
702+
703+
parentRunnerSaved =
704+
runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, parentRunner)
705+
706+
runner =
707+
makeRunner(
708+
organizationSaved.id!!,
709+
workspaceSaved.id!!,
710+
solutionSaved.id!!,
711+
name = "Runner",
712+
parentId = parentRunnerSaved.id!!,
713+
datasetList = mutableListOf(datasetSaved.id!!),
714+
parametersValues = mutableListOf(runTemplateParameterValue2))
715+
716+
runnerSaved = runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner)
717+
650718
every { getCurrentAccountIdentifier(any()) } returns CONNECTED_READER_USER
651719

652720
logger.info("should throw CsmAccessForbiddenException when trying to add RunnerAccessControl")

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3563,7 +3563,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() {
35633563
val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)
35643564
val organizationSaved = organizationApiService.registerOrganization(organization)
35653565
val dataset =
3566-
makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role)
3566+
makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role, false)
35673567
var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset)
35683568
datasetSaved =
35693569
datasetRepository.save(
@@ -4576,7 +4576,13 @@ class RunnerServiceRBACTest : CsmRedisTestBase() {
45764576
ioTypes = listOf(IoTypesEnum.read))
45774577
}
45784578

4579-
fun makeDataset(organizationId: String, connector: Connector, id: String, role: String): Dataset {
4579+
fun makeDataset(
4580+
organizationId: String,
4581+
connector: Connector,
4582+
id: String,
4583+
role: String,
4584+
isMain: Boolean = true
4585+
): Dataset {
45804586
return Dataset(
45814587
name = "Dataset",
45824588
organizationId = organizationId,
@@ -4588,6 +4594,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() {
45884594
name = connector.name,
45894595
version = connector.version,
45904596
),
4597+
main = isMain,
45914598
security =
45924599
DatasetSecurity(
45934600
default = ROLE_NONE,

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,9 +491,10 @@ class RunnerService(
491491
private fun removeAccessControlToDatasets(userId: String) {
492492
val organizationId = this.runner.organizationId!!
493493
this.runner.datasetList!!.forEach { datasetId ->
494-
val datasetACL =
495-
datasetApiService.findDatasetById(organizationId, datasetId).getRbac().accessControlList
494+
val dataset = datasetApiService.findDatasetById(organizationId, datasetId)
495+
if (dataset.main!!) return@forEach
496496

497+
val datasetACL = dataset.getRbac().accessControlList
497498
if (datasetACL.any { it.id == userId })
498499
datasetApiService.removeDatasetAccessControl(organizationId, datasetId, userId)
499500
}

0 commit comments

Comments
 (0)