Skip to content

Commit 534bff5

Browse files
feat: removing runner from scenario won't remove him from linked main datasets
1 parent 0b24f7f commit 534bff5

File tree

3 files changed

+49
-5
lines changed

3 files changed

+49
-5
lines changed

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

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,40 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() {
535535

536536
@Test
537537
fun `test AccessControls management on Runner as ressource Admin`() {
538+
dataset = makeDataset(organizationSaved.id!!, "Dataset", connectorSaved, false)
539+
datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset)
540+
materializeTwingraph()
541+
542+
solution = makeSolution(organizationSaved.id!!)
543+
solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution)
544+
545+
workspace = makeWorkspace(organizationSaved.id!!, solutionSaved.id!!, "Workspace")
546+
workspaceSaved = workspaceApiService.createWorkspace(organizationSaved.id!!, workspace)
547+
548+
parentRunner =
549+
makeRunner(
550+
organizationSaved.id!!,
551+
workspaceSaved.id!!,
552+
solutionSaved.id!!,
553+
"RunnerParent",
554+
mutableListOf(datasetSaved.id!!),
555+
parametersValues = mutableListOf(runTemplateParameterValue1))
556+
557+
parentRunnerSaved =
558+
runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, parentRunner)
559+
560+
runner =
561+
makeRunner(
562+
organizationSaved.id!!,
563+
workspaceSaved.id!!,
564+
solutionSaved.id!!,
565+
name = "Runner",
566+
parentId = parentRunnerSaved.id!!,
567+
datasetList = mutableListOf(datasetSaved.id!!),
568+
parametersValues = mutableListOf(runTemplateParameterValue2))
569+
570+
runnerSaved = runnerApiService.createRunner(organizationSaved.id!!, workspaceSaved.id!!, runner)
571+
538572
logger.info("should add an Access Control and assert it has been added")
539573
val runnerAccessControl = RunnerAccessControl(TEST_USER_MAIL, ROLE_VIEWER)
540574
var runnerAccessControlRegistered =
@@ -1120,7 +1154,8 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() {
11201154
fun makeDataset(
11211155
organizationId: String = organizationSaved.id!!,
11221156
name: String = "name",
1123-
connector: Connector = connectorSaved
1157+
connector: Connector = connectorSaved,
1158+
isMain: Boolean = true
11241159
): Dataset {
11251160
return Dataset(
11261161
name = name,
@@ -1133,6 +1168,7 @@ class RunnerServiceIntegrationTest : CsmRedisTestBase() {
11331168
name = connector.name,
11341169
version = connector.version,
11351170
),
1171+
main = isMain,
11361172
security =
11371173
DatasetSecurity(
11381174
default = ROLE_NONE,

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3545,7 +3545,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() {
35453545
val organization = makeOrganizationWithRole(id = TEST_USER_MAIL, role = ROLE_ADMIN)
35463546
val organizationSaved = organizationApiService.registerOrganization(organization)
35473547
val dataset =
3548-
makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role)
3548+
makeDataset(organizationSaved.id!!, connectorSaved, TEST_USER_MAIL, role, false)
35493549
var datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset)
35503550
datasetSaved =
35513551
datasetRepository.save(
@@ -4545,7 +4545,13 @@ class RunnerServiceRBACTest : CsmRedisTestBase() {
45454545
ioTypes = listOf(IoTypesEnum.read))
45464546
}
45474547

4548-
fun makeDataset(organizationId: String, connector: Connector, id: String, role: String): Dataset {
4548+
fun makeDataset(
4549+
organizationId: String,
4550+
connector: Connector,
4551+
id: String,
4552+
role: String,
4553+
isMain: Boolean = true
4554+
): Dataset {
45494555
return Dataset(
45504556
name = "Dataset",
45514557
organizationId = organizationId,
@@ -4557,6 +4563,7 @@ class RunnerServiceRBACTest : CsmRedisTestBase() {
45574563
name = connector.name,
45584564
version = connector.version,
45594565
),
4566+
main = isMain,
45604567
security =
45614568
DatasetSecurity(
45624569
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
@@ -490,9 +490,10 @@ class RunnerService(
490490
private fun removeAccessControlToDatasets(userId: String) {
491491
val organizationId = this.runner.organizationId!!
492492
this.runner.datasetList?.forEach { datasetId ->
493-
val datasetACL =
494-
datasetApiService.findDatasetById(organizationId, datasetId).getRbac().accessControlList
493+
val dataset = datasetApiService.findDatasetById(organizationId, datasetId)
494+
if (dataset.main!!) return@forEach
495495

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

0 commit comments

Comments
 (0)