Skip to content

Commit efbe0a1

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

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

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

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -647,6 +647,41 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() {
647647

648648
@Test
649649
fun `test AccessControls management on Runner as Unauthorized User`() {
650+
651+
dataset = makeDataset(organizationSaved.id!!, "Dataset", connectorSaved, isMain = false)
652+
datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset)
653+
materializeTwingraph()
654+
655+
solution = makeSolution(organizationSaved.id!!)
656+
solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution)
657+
658+
workspace = makeWorkspace(organizationSaved.id!!, solutionSaved.id!!, "Workspace")
659+
workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace)
660+
661+
parentRunner =
662+
makeRunner(
663+
organizationSaved.id!!,
664+
workspaceSaved.id!!,
665+
solutionSaved.id!!,
666+
"RunnerParent",
667+
mutableListOf(datasetSaved.id!!),
668+
parametersValues = mutableListOf(runTemplateParameterValue1))
669+
670+
parentRunnerSaved =
671+
runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, parentRunner)
672+
673+
runner =
674+
makeRunner(
675+
organizationSaved.id!!,
676+
workspaceSaved.id!!,
677+
solutionSaved.id!!,
678+
name = "Runner",
679+
parentId = parentRunnerSaved.id!!,
680+
datasetList = mutableListOf(datasetSaved.id!!),
681+
parametersValues = mutableListOf(runTemplateParameterValue2))
682+
683+
runnerSaved = runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner)
684+
650685
every { getCurrentAccountIdentifier(any()) } returns CONNECTED_READER_USER
651686

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

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)